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. 外观数列(简单模拟)的主要内容,如果未能解决你的问题,请参考以下文章