• 打印最大的 n 位数
    • 解题思路

    打印最大的 n 位数

    输入n,打印出 1 到最大的 n 位十进制数。比如输入3,则打印出1、2、3 直到最大的 3 位数 999。

    解题思路

    1. n 可能很大,导致输出的数字超过 int 或者 long
    1. public void PrintN(int n) {
    2. if (n <= 0) {
    3. return;
    4. }
    5. String res = "0";
    6. while (true) {
    7. boolean all9 = true;
    8. res = Plus(res, 1);
    9. System.out.println(res);
    10. for (int i = 0; i < res.length(); i++) {
    11. if (res.charAt(i) != '9') {
    12. all9 = false;
    13. break;
    14. }
    15. }
    16. if (all9 && res.length() == n) {
    17. break;
    18. }
    19. }
    20. }
    21. private String Plus(String t, int i) {
    22. char[] chars = t.toCharArray();
    23. StringBuilder res = new StringBuilder();
    24. chars[chars.length - 1] += i;
    25. boolean flag = false;
    26. for (int j = chars.length - 1; j >= 0; j--) {
    27. int a = chars[j];
    28. if (flag) {
    29. a++;
    30. flag = false;
    31. }
    32. if (a > '9') {
    33. flag = true;
    34. a = a - '9' + '0' - 1;
    35. }
    36. res.append((char) a);
    37. }
    38. if (flag) {
    39. res.append('1');
    40. }
    41. return res.reverse().toString();
    42. }