10進文字列の変換

1338 ワード

最近の面接では、「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();
	}
}