题目:采用[b]递归[/b]的方法给正整数n加上分隔符','
比如 1234567 ==> 1,234,567
其中putCommas()是我自己的方法,insertCommas()是google出来的一个老外写的方法。我的分隔符是从前面开始加的,比如上面的例子,我是先在1之后加上',',而老外那个insertCommas是从后面开始加上去的
先贴上代码吧 等下再分析
其中,我是将原字符串分成后3位以及前面剩下的字符串(假设此时字符串长度还是大于3),而老外的办法是将字符串打碎按照下标加入了分隔符之后再toString()合起来。
我感觉我的方式要好理解一点,可能他的方法效率要高一点。
为了让我的方法更清楚的说明是从前面开始加分隔符
我的方法改成下面的样子:
比如 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;
}