111211211111221算法面试题讲解

3次阅读

共计 2431 个字符,预计需要花费 7 分钟才能阅读完成。

第一个数是:1;

第二个数是:11;

第三个数是:21;

第四个数是:1211;

第五个数是:111221;

…………………………

第二十七个数共 2012 位;

问第十二个数有多少位?

规律是:

第 2 数:是对第一个数的解释:1—-》11,1 个 1.

第 3 数:是对第二个数的解释:11—-》21,2 个 1.

第 4 数:是对第三个数的解释:21—-》1211,1 个 2,2 个 1.

第 5 数:是对第四个数的解释:1211—-》111221,1 个 1,1 个 2,2 个 1.

第 6 数:是对第五个数的解释:111221—-》312211,3 个 1,2 个 2,1 个 1.

第 7 数:是对第六个数的解释:312211—-》13112221,1 个 3,1 个 1,2 个 2,2 个 1.

第 8 数:是对第七个数的解释:13112221—-》1113213211,1 个 1,1 个 3,2 个 1,3 个 2,1 个 1.

第 9 数:是对第八个数的解释:1113213211—-》31131211131221,3 个 1,1 个 3,1 个 2,1 个 1,1 个 3,1 个 2,2 个 1.

将其中的“个”和“,”去掉即得到下一个数

第 10 个数:31131211131221—-》13211311123113112211

第 11 个数:13211311123113112211—-》11131221133112132113212221

第 12 个数:11131221133112132113212221—-》3113112221232112111312211312113211 共 34 个数

答案 34.

接下来请看算法程序~~~~

    String[] args = new String[count];
    args[0] = "1";
    args[1] = "11";
    for(int i = 2;i < count;i++){
        int j = 1;
        String result = "";
        String arg = args[i - 1];
        for(int n = 0;n < arg.length();n++){if(n < arg.length() - 1){if(arg.charAt(n) == arg.charAt(n + 1)){j++;}else{result += String.valueOf(j) + arg.charAt(n);
                    j = 1;
                }
            }else{result += String.valueOf(j) + arg.charAt(n);
                j = 1;
                args[i] = result;
            }
        }
    }

第 1 行:1 位
1
第 2 行:2 位
11
第 3 行:2 位
21
第 4 行:4 位
1211
第 5 行:6 位
111221
第 6 行:6 位
312211
第 7 行:8 位
13112221
第 8 行:10 位
1113213211
第 9 行:14 位
31131211131221
第 10 行:20 位
13211311123113112211
第 11 行:26 位
11131221133112132113212221
第 12 行:34 位
3113112221232112111312211312113211
第 13 行:46 位
1321132132111213122112311311222113111221131221
第 14 行:62 位
11131221131211131231121113112221121321132132211331222113112211
第 15 行:78 位
311311222113111231131112132112311321322112111312211312111322212311322113212221
第 16 行:102 位
132113213221133112132113311211131221121321131211132221123113112221131112311332111213211322211312113211
第 17 行:134 位
11131221131211132221232112111312212321123113112221121113122113111231133221121321132132211331121321231231121113122113322113111221131221
第 18 行:176 位
31131122211311123113321112131221123113112211121312211213211321322112311311222113311213212322211211131221131211132221232112111312111213111213211231131122212322211331222113112211
第 19 行:226 位
1321132132211331121321231231121113112221121321132122311211131122211211131221131211132221121321132132212321121113121112133221123113112221131112311332111213122112311311123112111331121113122112132113213211121332212311322113212221
第 20 行:302 位
11131221131211132221232112111312111213111213211231132132211211131221131211221321123113213221123113112221131112311332211211131221131211132211121312211231131112311211232221121321132132211331121321231231121113112221121321133112132112312321123113112221121113122113121113123112112322111213211322211312113211

Process finished with exit code 0~~~~
正文完
 0