10進文字列の変換
最近の面接では、「012345」-->「012346」、「999999」-->「00000」など、10進数文字列の変換の問題がよくあります.
public class Test {
public static void main(String[] args) {
System.out.println(convert("012345"));
}
// "012345"-->"012346"
public static String convert(String num) {
StringBuffer sb = new StringBuffer("");
char[] cs = num.toCharArray();
int[] nums = new int[cs.length];
//
try {
for (int i = 0; i < nums.length; i++) {
nums[i] = Integer.parseInt(String.valueOf(cs[i]));
}
} catch (Exception e) {
System.out.println(" !");
return "";
}
// 1
nums[nums.length - 1] += 1;
//
for (int i = nums.length; i > 0; i--) {
try {
if (nums[i - 1] >= 10) {
nums[i - 2] += nums[i - 1] / 10;
nums[i - 1] %= 10;
} else {
break;
}
} catch (Exception e) {
for (int j = 0; j < nums.length; j++) {
sb.append("0");
}
return sb.toString();
}
}
for (int i = 0; i < nums.length; i++) {
sb.append(nums[i]);
}
return sb.toString();
}
}