leetcode 38. 外观数列(medium)(优质解法)

链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

leetcode 38. 外观数列(medium)(优质解法)_第1张图片leetcode 38. 外观数列(medium)(优质解法)_第2张图片

代码:

class Solution {
    public String countAndSay(int n) {
        //要进行 n - 1 次描述才能得到结果
        // last 代表当前要描述的字符串
        String last="1";
        // ret 代表描述 last 字符串得到的结果
        for(int i=1;i

题解:

        本题的解法比较简单粗暴,直接按照题目的要求进行模拟即可

        先要搞明白如何描述一个数字字符串,我们可以通过双指针来进行描述,比如有字符串 11222 需要我们进行描述,描述的结果应为 2132

        先让 L 和 R 指针指向下标为 0 的位置,描述的核心就是要获得连续字符的个数,首先判断 R 指针和 L 指针指向的数据是否相同,相同 R 指针就向后移

1        1        2        2        2

L

R

        根据上述要求,R 指针移动到当前位置,此时 R 指针指向的数据和 L 指针指向的不同,L 指针指向的就是当前数的数据,个数为 R - L,将个数和数据拼接到字符串中,得到 21

1        1        2        2        2

L

                    R    

        L 指针指向的数据已经数好了,让 L 指针移动到 R 指针所在的位置,数下一个连续数据的个数

1        1        2        2        2

                    L   

                    R   

        同理,当 L 和 R 指针相同 R 指针就向后移动,要注意边界,R 指针移动到字符串边界时要停止,得到数据  2 个数 R - L = 3 ,将其拼接到字符串中得到 2132

1        1        2        2        2

                    L   

                                               R  

        知道如何描述,以及一开始描述的数据为 1,便知道描述 n -1 次后得到的数据为多少

你可能感兴趣的:(leetcode,leetcode,算法,职场和发展)