`

采用递归的方法给正整数n加上分隔符','

阅读更多
题目:采用递归的方法给正整数n加上分隔符','
比如 1234567 ==> 1,234,567

其中putCommas()是我自己的方法,insertCommas()是google出来的一个老外写的方法。我的分隔符是从前面开始加的,比如上面的例子,我是先在1之后加上',',而老外那个insertCommas是从后面开始加上去的

先贴上代码吧 等下再分析
public class Test {
	public static void main(String[] args) {
		int i =1234;
		String value = i + "";
		value = putCommas(value);
		//value = insertCommas(value);
		System.out.println(value);
	}
	
	public static String putCommas(String str) {
		int length = str.length();
		if(length > 3) {
			String ahead = str.substring(0,length - 3);
			String back = str.substring(length-3);
			str = putCommas(ahead) + "," + back;
		} 
		return str;		
	}
	
	public static String insertCommas(String str) { 
		String newStr = str; 
		int firstComma = str.indexOf(","); 
		if(firstComma < 0) firstComma = str.length(); 
		if(str.length() > 3 && firstComma > 3) { 
			newStr = insertCommas(new StringBuffer(str).insert(firstComma-3,",").toString()); 
		} 
		return newStr; 
	}
}



其中,我是将原字符串分成后3位以及前面剩下的字符串(假设此时字符串长度还是大于3),而老外的办法是将字符串打碎按照下标加入了分隔符之后再toString()合起来。
我感觉我的方式要好理解一点,可能他的方法效率要高一点。

为了让我的方法更清楚的说明是从前面开始加分隔符
我的方法改成下面的样子:
	public static String putCommas(String str) {
		int length = str.length();
		if(length > 3) {
			String ahead = str.substring(0,length - 3);
			String back = str.substring(length-3);
			//str = putCommas(ahead) + "," + back;
			ahead = putCommas(ahead);
			str = ahead + "," + back;
		} 
		return str;		
	}
分享到:
评论

相关推荐

    易语言正则金额分隔

    在处理正整数金额时,首先需要确保输入的数字是正整数,然后利用正则表达式的替换功能,找到每连续的三位数字,并在其后插入分隔符。在易语言中,这通常涉及到以下几个步骤: 1. **数据输入与验证**:编写函数或...

    【解析】第十四届蓝桥杯Python省赛真题解析.pdf

    - **题目要求**:给定一个正整数N,计算并输出N + N的值。 - **关键点**: - 使用`input()`函数读取用户输入的整数N。 - 使用基本的数学运算符`+`计算N + N的值。 - 注意输入函数`input()`的使用规范,括号内不...

    前端第二阶段笔记( JavaScript )

    `join`方法可以将数组元素连接成一个字符串,其参数指定了连接时使用的分隔符,若参数为`""`(空字符串),则数组元素之间不插入任何字符,直接相连。而`split`方法则是将字符串分割为数组,其参数同样指定了分割符...

    java小程序

    4. **递归求阶乘**:阶乘是一个数的所有小于等于它的正整数的乘积。使用递归实现时,n! = n * (n-1)!,基础情况为0!和1!都等于1。 5. **递归求斐波那契数列**:斐波那契数列是每个数等于前两个数之和,通常表示为F...

    python基础练习(100题)

    - `str.split()`:根据指定的分隔符对字符串进行切片,返回一个列表。 - `str.join(list)`:用于将序列中的元素以指定的字符连接生成一个新的字符串。 - `str.strip()`:去除字符串两端的空白字符或其他指定字符...

    实际项目中可以用的常用函数代码

    阶乘是一个数与所有比它小的正整数的乘积,通常表示为n!。此函数采用递归的方式计算阶乘,当输入值为1时,返回1(因为1的阶乘定义为1)。阶乘函数在概率论、组合数学、统计学以及各种科学计算中都有重要作用。 ### ...

    NOIP2001提高组试题及测试数据

    问题可能是要求将一个正整数n分成若干个正整数的和,探究有多少种不同的划分方式。解决方案可能包括枚举每个子集的大小,使用递归或动态规划来避免重复计算。 ### 题目三:统计单词个数 这是一道文本处理题目,...

    精选_基于C语言实现的金字塔问题(Pyramid Problem)_源码打包

    7. **格式化输出**:在C语言中,`printf`函数用于输出字符串和变量,使用"\t"进行制表符分隔,使用"\n"换行。 下面是一个简单的C语言代码示例,演示如何用循环解决金字塔问题: ```c #include void printPyramid...

    【YPP】有用的函数和经验

    5. 特殊格式的书写.txt:这可能涉及I/O操作,比如格式化输入输出,或者处理特定的数据格式,如日期、时间或自定义的分隔符。在C++中,可以使用`std::stringstream`类进行流式操作,或者使用`std::ios_base::fmtflags...

    语言程序设计课后习题答案

    因此,面向对象的编程语言使程序能够比较直接地反问题域的本来面目,软件开发人员能够利用人类认识事物所采用的一般思维方法来进行软件开发。C++语言是目前应用最广的面向对象的编程语言。 1-3 什么是结构化程序设计...

    yanghuisanjiao.rar_out

    这里需要注意的是,当输出到文件时,每一行的数字之间可以加上适当的分隔符(如空格或换行符),以便于在文件中的查看和阅读。 综上所述,该项目的实现过程涵盖了文件操作、动态内存分配、数组构建、算法实现和文件...

    南理工复试历年上机答案

    C.1 题目要求输入一个英文句子,要求句中单词分行打印出,句中单词分隔符可能是空格、制表格、回车等。这要求考生具备字符串操作和单词分隔的能力。 C.2 题目要求使用二分法查找方程 X^9-4X^5-5X^3-270000=0 在(0...

    2023年12月GESP认证真题(c++)

    **题目:** 输入一个正整数N(N&gt;=7),想找出它所有相邻的因数对,比如,输入12,因数对有(1,2)、(2,3)、(3,4)。下面哪段代码找不到所有的因数对?() - A. for(i=1;i&lt;N;i++) if(!(N%i) && !(N%(i+1))) printf("(%d,%d)\...

    解释器构造实验+CMM1

    - 目的在于将源代码分解成一个个有意义的单元,即单词记号(token),这包括关键字、标识符、常量、运算符和分隔符。 - 实现词法分析器通常使用扫描器(lexer)或词法分析器生成器,如lex或flex。 - 忽略空格、...

    python编程题.docx

    12. **阶乘计算**:第十三题是计算阶乘,阶乘是一个数所有小于等于它的正整数的积,可以使用循环实现。 13. **turtle库**:第十四题利用turtle库绘制红色线条的六边形,展示了turtle库的绘图功能,如设置线条宽度、...

    C语言编程题精选,知识点较全

    使用空格作为分隔符,分割字符串为单词。 2. 遍历每个单词,记录最长单词及其长度。 3. 输出最长单词。 #### 6. 选举投票 - **知识点**: - 字符输入处理 - 字符串比较 - 数组操作 - **实现思路**: 1. 创建...

    1 程序设计与算法集.docx

    14. **数单词的个数**:字符串处理问题,通常需要识别分隔符(如空格、标点符号)并计数。 15. **循环移动**:可能涉及数组或列表的元素移动,如循环移位,可能用到循环和索引操作。 16. **函数和字符串排列**:这...

    C语言编程题精选.pdf

    - 使用空格作为分隔符分割字符串 - 计算每个单词的长度 - 保存最长单词 ### 6. 模拟选举过程 - **知识点**: - 字符串输入 - 条件判断 - 循环结构 - 数组或哈希表记录结果 - **技术要点**: - 输入候选人...

    airbnb 软件工程师面试题

    - **定义**:对于任意一个正整数n,如果n是偶数,则将它除以2;如果是奇数,则将它乘以3再加1。不断重复这样的运算,最终都能够回到1。 - **实现思路**: - 使用递归或循环实现该过程。 - 为提高效率,可以使用...

Global site tag (gtag.js) - Google Analytics