”让男友打十万个「对不起」道歉,汉字标上多少遍。如何快速检查中间没有漏?“的坚决方案
2016-06-01 21:09
645 查看
源于知乎上的这个问题https://www.zhihu.com/question/27231908
解决方案:
用数组来存储汉字,堆栈存储每次遍历到的数字需要的汉字
解决方案:
用数组来存储汉字,堆栈存储每次遍历到的数字需要的汉字
import java.util.Stack; public class Main { static String[] values = {"零", "一", "二", "三", "四", "五", "六", "七", "八", "九"}; static String[] pos = {"拾", "佰", "仟", "万"}; private static Stack<String> mStack; public static void main(String[] args) { long start = System.currentTimeMillis(); for (int i = 1; i <= 99999; i++) { if (i >= 10 && i < 20) { System.out.println("对不起 第" + change(i).substring(1) + "遍"); } else { System.out.println("对不起 第" + change(i) + "遍"); } } long end = System.currentTimeMillis(); System.out.println("运行时间" + (end - start) + "ms"); } private static String change(int i) { boolean flag = false; int len = 0; int num = i; while (i > 0) { i /= 10; len++; } if (len > 1) { mStack = new Stack<String>(); for (int j = 1; j < len; j++) { if (numAtInteger(num, j) != 0) mStack.push(pos[j - 1]); } } StringBuilder sb = new StringBuilder(); for (int j = len - 1; j > 0; j--) { int temp = (num / ((int) Math.pow(10, j))); num %= ((int) Math.pow(10, j)); if (temp != 0) { sb.append(values[temp]); sb.append(mStack.pop()); } if (temp == 0 && !flag) { sb.append("零"); flag = true; } } if (num == 0) { if (sb.toString().endsWith("零")) { return sb.substring(0, sb.length() - 1); } return sb.toString(); } else { sb = sb.append(values[num]); return sb.toString(); } } static int numAtInteger(int num, int j) { while (j > 0) { num /= 10; j--; } return num % 10; } }
相关文章推荐
- Android之获取手机上的图片和视频缩略图thumbnails
- android string.xml文件中的整型和string型代替
- Android java 与 javascript互访(相互调用)的方法例子
- android上改变listView的选中颜色
- String.intern
- Prototype源码浅析 String部分(二)
- Ruby中的String对象学习笔记
- PostgreSQL ERROR: invalid escape string 解决办法
- 浅谈C++中的string 类型占几个字节
- 标准C++类string的Copy-On-Write技术
- C++实现string存取二进制数据的方法
- C#中string和StingBuilder内存中的区别实例分析
- 详解C++中实现继承string类的MyString类的步骤
- PHP STRING 陷阱原理说明
- c#中 String和string的区别介绍
- C#实现的图片、string相互转换类分享
- asp.net String.IsNullOrEmpty 方法
- JavaScript中字符串(string)转json的2种方法
- C#中string用法实例详解
- 浅析C#中StringBuilder类的高效及与String的对比