实现将金币按照千为单位,以","分割的算法
class MultixCoins {
public static void main(String[] args) {
System.out.println(adjustCoins(1222000000, '-'));
adjustCoin(15203, ',');
System.out.println(sb.toString());
}
// 使用递归思想实现
private static StringBuilder sb = new StringBuilder();
private static String adjustCoin(long coin, char split) {
if (coin <= 0) {
throw new IllegalArgumentException("coin must > 0");
}
if (coin <= 1000) {
sb.append(coin);
return sb.toString();
}
long remainder = coin % 1000;
String mulStr = "";
if (remainder >= 100) {
mulStr = split + "" + remainder;
} else if (remainder >= 10) {
mulStr = split + "0" + remainder;
} else {
mulStr = split + "00" + remainder;
}
long realCoin = coin / 1000;
adjustCoin(realCoin, split);
sb.append(mulStr);
return sb.toString();
}
// 使用字符数组实现
private static String adjustCoins(long coin, char split) {
if (coin <= 0) {
throw new IllegalArgumentException("coin must > 0");
}
if (coin <= 1000) {
return "" + coin;
}
char[] chars = String.valueOf(coin).toCharArray();
int replaceNum = chars.length / 3;
char[] result = new char[chars.length + replaceNum-1];
int resultLength = result.length - 1;
for (int i = chars.length - 1; i >= 0; i--) {
if (replaceNum > 0) {
result[resultLength--] = chars[i--];
result[resultLength--] = chars[i--];
result[resultLength--] = chars[i];
if (i != 0) {
result[resultLength--] = split;
}
replaceNum--;
} else {
result[resultLength--] = chars[i];
}
}
return new String(result);
}
}