`

interview---str----315(三百一十五)

J# 
阅读更多
数学技巧: 如果想把连续的几位归到一类,那么使用除法
比如: 6,7,8 需要归为一类 ,因为是三个数字三个数字的,所以除以3  i/3 =2
7,8,9归到一类 那么除以三, (i-1)/3   
如果需要把不连续的归到一类,那么使用取余数  %  
0,4,8,12 ----因为差为4,所以他们与4有关。。。  i%4 = 0
1,5,9,13 --他们的差也是4,   (i-1)%4 = 0 或者   i%4 =1
如果要让1,3,5,7,9归到一类   i%2 =1 
下面先看一段js中交替3行显示的核心代码
var j = parseInt(i/3);  //把三个归为一组,交替变换,那么每隔一组相同,所以相隔的归为一类,所以%,而且步长为2,所以 i%2
if(j%2==0) rows[i].style.backgroundColor="#f00";
else  rows[i].style.backgroundColor="#0f0";



编写一函数,将一个数字转换成中文返回。数字的最大值为99999,最小值为0,没有小数。例:输入“3587”,返回“三千伍百八十七”。

思路:要做这道题首先要对中文进行分析:
54582  ----伍万 肆千伍佰捌拾贰 这个时候是一一对应的 
654582 ---陆拾伍万 肆千伍佰捌拾贰 所以可以拆成 65 万 4582
7654582   765 万  4582
87654582   8765万  4582
987654582  9亿  8765万  4582  
所以中文是四位四位的分的,每四位都是一样的读法,只是在前面加点表示高位的单位
如果把他们存入数组,那么index=12 ----兆  index = 8---亿   index=4 ---万  
index=11,7,3 --- 千   index=10,6,2---百   index=9,5,1---十
index=12,8,4,0---兆,忆,万,个
有趣的是他们都是公差为4的等差数列
12,8,4,0 %4 == 0 ---需要映射到不同地方(0映射到4(表示4+0倍),4映射到5(表示4+1倍,8表示4+2倍,12表示4+3倍,那么为什么是基数4呢,因为下面的十百千分别隐射了123位,0位浪费,所以基数从四开始))。。任意基数加上倍数来区分,找区别
9,5,1 %4 == 1  ---需要映射到同一个地方,找共性,都能整除4
10,6,2 % 4 == 2
11,7,3 %4 == 3
所以在数组中我们这样安排:
public static final String[] UNITS = { "", "拾", "佰", "千", "", "万", "亿", "兆" };



class Test{
public static final String[] NUMS = { "零", "壹", "贰", "叁", "肆", "伍", "陆",
			"柒", "捌", "玖" };
	public static final String[] UNITS = { "", "拾", "佰", "千", "", "万", "亿", "兆" };

	public static String toChineseNumber(long number) {
		String arabicNumber = String.valueOf(number);
		StringBuilder chineseNumber = new StringBuilder();
		boolean isZero = false;// 上一个数字是否是0
		for (int i = 0, index = arabicNumber.length() - 1; i < arabicNumber
				.length(); i++, index--) {
			int n = Integer.parseInt(arabicNumber.substring(i, i + 1));
			if (n == 0) {
				if (index % 4 == 0) {// 如果位数是4的倍数,则添加对应的单位
					chineseNumber.append(UNITS[index / 4 + 4]);
				}
				isZero = true;
				continue;
			}
			if (isZero) {// 上一个数字是0,当前数字不是0
				chineseNumber.append(NUMS[0]);
				isZero = false;
			}
			chineseNumber.append(NUMS[n]).append(
					index % 4 == 0 ? UNITS[index / 4 + 4] : UNITS[index % 4]);
		}
		return chineseNumber.toString();
	}

	public static void main(String[] args) {
		System.out.println(toChineseNumber(345));
		System.out.println(toChineseNumber(10035));
		System.out.println(toChineseNumber(1234567890));
		System.out.println(toChineseNumber(1230007890));
	}

}
分享到:
评论

相关推荐

    python-interview-questions:300多个Python面试问题

    提及str.format enumerate和使用的str.format 。 问:Python特别擅长什么? 什么时候使用Python是项目的“正确选择”? Python是一种高级,解释性,交互式和面向对象的脚本语言。 Python的设计具有很高的可读性。 ...

    Coding-Interview-Prep:此存储库用于编写Coding-Interview-Prep

    编码面试预备二进制数组排序Input: 5 1 0 1 1 0 Output: 0 0 1 1 1字符串中的数字总和Input: str = abc12yu8it4 Output: 24说明:1和23是字符串中的数字,这些数字相加后得出的总和为24。 检查数组中对的和arr[] = {...

    python_interview_question-master.zip

    这份"python_interview_question-master.zip"资源包含了丰富的面试题目,旨在帮助Python学习者和求职者全面巩固和提升Python知识,涵盖了从基础语法到高级特性的全方位考察,同时特别加入了爬虫和Web开发的相关内容...

    Vincent131499#NLP-Algorithm-Interview#2-替换空格1

    解题思路1:使用replace语句生成一个新的str,原始的s还是带空格的str变量# s 源字符串解题思路2:使用append一次遍历即可替换,由于list的

    interview-preparation

    在“interview-preparation”这个压缩包中,我们可以推测它是一个专门为面试准备的资源集合,特别是针对编程领域的面试。从标签“Python”来看,我们聚焦的焦点是Python编程语言的相关知识。下面,我们将深入探讨...

    lrucacheleetcode-coding-interview-patterns:编码面试模式

    lru缓存leetcode 力码解决方案 ...在没有自动类型强制的语言中,检查值的连接是否属于相同类型:int、str 和 list。 完成代码后,使用一些示例输入来测试您的解决方案。 该算法是否应该多次运行,也许在 Web

    蚂蚁金服社招java笔试题目-coding-interview-study-guide:此存储库包含我为准备编码面试而收集的笔记

    笔记哈希表:一种将键映射到值以实现高效查找的数据结构。 ArrayLists 和可调整大小的数组 字符串生成器 补充主题: 枚举与迭代器 收藏界面 面试问题: 面试问题1.1 是唯一的 Approach 1: Brute Force Run 2 loops ...

    基于javatcpsocket通信的拆包和装包源码-python-interview-questions.io:python-intervie

    提及enumerate和使用str.format 。 问:Python 特别擅长什么? 什么时候使用 Python 是项目的“正确选择”? Python 是一种高级、解释性、交互性和面向对象的脚本语言。 Python 被设计为具有高度可读性。 它经常使用...

    基于javatcpsocket通信的拆包和装包源码-python-interview-questions:Python面试问题

    提及enumerate和使用str.format 。 问:为什么这种语言被称为 Python? 在开始实施 Python 的同时,Guido van Rossum 还在阅读“Monty Python's Flying Circus”(70 年代的 BBC 喜剧系列)中已发布的脚本。 问:...

    php developer interview

    $b = str_split(substr($a, 3, 6)); foreach($b as $c) print $c; ``` Output: ``` ecrtc ``` 4. **Code Snippet 4** ```php for($i=65;$i;++$i) printf("%c\n", $i); ``` This will print all ...

    Python3 interview prep cheatsheet and examples.zip

    这份压缩包“Python3 interview prep cheatsheet and examples.zip”包含了Ahao2文件,它很可能是一份包含了关键Python知识的速查表,以及各种编程实践的示例。下面我们将深入探讨Python3中的关键知识点。 1. **...

    java7hashmap源码-Interview:面试宝典

    //如果没有,则首先在字符串池中创建这个对象,再在堆中创建一个"interview"对象,然后将堆中的这个对象赋值给 str 。 //如果有,则直接在堆中创建一个"interview"对象,然后将堆中的这个对象赋值给 str 。 由字符串...

    c# asp.net interview

    string str = "Hello"; ``` 试图将一个int赋值给string会导致编译错误。 5. .NET中读写数据库: 主要使用ADO.NET库,包括SqlConnection、SqlCommand、SqlDataReader等类。例如: ```csharp using ...

    Java Programming Interview Questions.pdf

    在Java编程面试中,面试官通常会询问一系列技术问题来评估候选人的技能和经验。以下是一些基于给定文件中的Java编程面试问题及其详细解答: 1. **计算Nth斐波那契数**:斐波那契数列是每个数字是前两个数字之和。...

    C and C++ normal interview_3.doc

    ` 或 `char str[] = "Hello";` - **索引**: 访问数组中的元素,如 `arr[0]` 表示第一个元素。 - **字符串处理**: 使用标准库函数如 `strlen`, `strcpy`, `strcat` 等处理字符串。 #### 6. 结构体与联合 结构体和...

    A Collection of Bit Programming Interview Questions solved in C++.pdf

    给定一个整数数组,其中所有数都出现了两次,但有一个数只出现了一次,找出这个唯一的数。 **解决方案概述:** 可以通过异或运算来实现,所有数异或后剩余的就是那个唯一出现一次的数。 **代码示例:** ```cpp int...

    holbertonschool-interview:用于解决面试问题和提高逻辑技能的存储库

    Holbertonschool-interview是一个专门为面试准备和逻辑技能提升设计的资源库,尤其侧重于Python编程。在这个存储库中,你可以找到一系列练习和挑战,旨在帮助你提升在面试中所需的技术能力和逻辑思维。 一、Python...

    Java String Interview Questions.pdf

    str1 == str2比较字符串的引用,而str1.equals(str2)比较字符串的内容。 11. 是否可以使用==操作符比较字符串?如果可以,存在什么风险? 可以使用==操作符比较字符串,但是存在风险,因为==操作符比较字符串的...

    InterviewQuestions:面试问题的所有解决方案

    "InterviewQuestions:面试问题的所有解决方案"这个存储库显然是为准备Python面试的求职者提供了一个宝贵的资源。下面,我们将深入探讨一些可能出现在Python面试中的关键知识点,并提供解决这些问题的思路。 1. **...

    interview

    在IT行业中,面试是评估求职者技能和适应度的关键环节。..."interview"这个标题暗示了我们将讨论PHP面试的..."interview-master"可能包含了一份面试指南或实践项目,进一步学习和实践其中的内容对提升面试表现大有裨益。

Global site tag (gtag.js) - Google Analytics