解题思路
典型的递归调用
-
1
-
11
-
21
-
1211
-
111221
循环调用前一次的结果,进行计数。当n=1时,递归结束,返回1.
代码
class Solution {
public String countAndSay(int n) {
if (n == 1) {
return "1";
}
String s = countAndSay(n - 1);
StringBuilder sb = new StringBuilder();
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if (i == s.length() - 1) {
cnt++;
sb.append(cnt).append(s.charAt(i));
} else if (s.charAt(i) == s.charAt(i + 1)) {
cnt++;
continue;
} else {
sb.append(cnt+1).append(s.charAt(i));
cnt=0;
}
}
return sb.toString();
}
}