Leetcode38. 外观数列(简单模拟)

Posted !0 !

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode38. 外观数列(简单模拟)相关的知识,希望对你有一定的参考价值。

题目链接:https://leetcode-cn.com/problems/count-and-say/

解题思路

这题就是简单模拟就行了。直接看代码。

代码

class Solution {
    public String countAndSay(int n) {
        String ans = "1";   //记录答案,因为不用频繁增删,所以还是用string效率高
        for(int i = 2; i <= n; i++) {   //因为答案记录了一次答案,所以只要在循环n-1次就行
            StringBuilder t = new StringBuilder();  //用StringBuilder是因为频繁增删效率高
            int cnt = 0;    //记录该数出现了多少次
            for(int j = 0; j < ans.length(); j++) { //遍历答案字符串
                cnt++;  
                if(j == ans.length() - 1 || ans.charAt(j) != ans.charAt(j + 1)) {   //如果是最后一个字符或者当前字符和后一个字符不相等
                    t.append(cnt);  //记录该字符出现次数
                    t.append(ans.charAt(j));    //再加入该字符
                    cnt = 0;
                }
            }
            ans = t.toString(); 
        }
        return ans;
    }
}

复杂度分析

  • 时间复杂度:O(n * m),m为答案字符的长度
  • 空间复杂度:O(m)

以上是关于Leetcode38. 外观数列(简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章

38. 外观数列模拟

力扣题解 38th 外观数列

leetcode38 外观数列(Easy)

算法leetcode|38. 外观数列(多语言实现)

[LeetCode] 38. 外观数列

Leetcode 38.外观数列