思路
字符串处理。遇到连续相同的数字就接着寻找下去(i+1 < len && s[i] == s[i+1]), 否则就将出现次数和字符加到结果字符串里面并且count复原为1,这样count的初始值应该为1,因为无论是否满足上面的条件,都要算一个字符。每一轮都会更新所要搜索的字符串。
时间复杂度O(n^2)【最坏情况】
空间复杂度O(1)
代码
class Solution {
public String countAndSay(int n) {
String start = "1";
while (n-- > 1) {
StringBuilder next = new StringBuilder();
int count = 1;
for (int i = 0; i < start.length(); i++) {
if (i + 1 < start.length() && start.charAt(i) == start.charAt(i + 1)) {
count++;
} else {
next.append(count);
next.append(start.charAt(i));
count = 1;
}
}
start = next.toString();
}
return start;
}
}