题目
结果
运行结果:
代码如下:
class Solution {
public String countAndSay(int n) {
if(n==1){
return "1";
}
String str = countAndSay(n-1);
StringBuilder sb = new StringBuilder();
int count = 1;
char old = str.charAt(0);
for(int i = 1;i < str.length();i++){
char target = str.charAt(i);
if(old==target){
++count;
}else{
sb.append(count+""+old);
old = target;
count = 1;
}
}
sb.append(count+""+old);
return sb.toString();
}
}
思路
思路很简单,运用递归,出口在n=1的时候,返回“1”,其他时候先递归调用f(n-1),之后对获取到的字符串进行解析,简单说就是计数,找到紧邻的字符串,然后进行拼接为本层的字符串,之后返回。