题目描述起来有点费事,1说出来就是1个1,所以是输出11,11说出来是2个1,所以是21…
我们把当前字符和前一个字符比较,并用count给这个数字计数,如果相等则不添加并count+1,继续后后面的字符比较直到不相等为止,添加count和该数字。
代码如下:
class Solution {
public String countAndSay(int n) {
if(n==1)
return "1";
StringBuilder res=new StringBuilder();
res.append(1);
StringBuilder prev;
int count;
char say;
for(int i=1;i<n;i++){
prev=res;
res=new StringBuilder();
count=1;
say=prev.charAt(0);
for(int j=0,len=prev.length();j<len;j++){
if(prev.charAt(j)!=say){
res.append(count).append(say);
count=1;
say=prev.charAt(j);
}else
count++;
}
res.append(count).append(say);
}
return res.toString();
}
}