
class Solution {
public String countAndSay(int n) {
String str,res;//res是对前一项的描述 就是结果,每个数的描述都是从“”生产的,所以要一个str记录一下上一个对前一项的描述
res="1";
for(int i=1;i<n;i++){//第一个一定是“1”所以说,n-1次循环就好了
str=res;
res="";
for(int j=0;j<str.length();){//对上一项,也就是str进行描述
int c=0,k=j;//c是当前数字有几个,k是当前数字的下标
while(k<str.length()&&str.charAt(k)==str.charAt(j)){
k++;//后一个数等于前一个数,则被描述的数字的个数,也就是c,加一,
c++;
}
res+=Integer.toString(c)+str.charAt(j);//后一个数不等于前一个数了,跳出循环,此时有c个j,在结果res上加上c个str[j]的信息
j=k;//更新下标
}
}
return res;
}
};