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; } };