`

采用递归的方法给正整数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;		
	}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics