题目
解题思路:递归
- 由题目知,每一个都是对上一项的描述,这就说明一定可以用递归做。
- 首先,先来个结束递归的条件,也就是n等于1,就返回“1”。
-之后就去递归得到上一项的字符串,循环这个字符串去判断是否是连续数字,用标记计数它的个数,直到不相等时,就用一开始创建的Stringbuilder去加入这个计数的字符串,然后在加上这个重复的数字,如果不是重复的,则加上“1”和这个数字即可。
代码
class Solution {
public String countAndSay(int n) {
if(n==1){
return "1";
}
String s = countAndSay(n-1);
StringBuilder sb = new StringBuilder();
int flag=1;
for(int i=1;i<s.length();i++){
if(s.charAt(i) == s.charAt(i-1)){
flag++;
}else{
sb.append(String.valueOf(flag));
sb.append(s.charAt(i-1));
flag=1;
}
}
sb.append(String.valueOf(flag));
sb.append(s.charAt(s.length()-1));
return sb.toString();
}
}
不懂就问~