一开始每太看懂题目
其实就是一开始是 1
然后就是对上面报数 1一个1 :11
再对上面报数:2个1:21
再对上面报数:一个2,一个1:1211
报数,就是将上面的数字从左到右,将个数和数字念出来。
这就好办了,建立一个数组就好了,每次取前面的数字
对它遍历,计算个数。
很多坑没有注意到,粗心了
public static String countAndSay(int n) { String [] data = new String[n+1]; data[1] = "1"; for(int i=2;i<=n;i++){ //遍历前一个字符串 String temp = data[i-1]; char last = temp.charAt(0); int count = 1; String result = ""; for(int j=1,len=temp.length();j<len;j++){ if(temp.charAt(j)==last) count++; else{ //直接加会加成数字了 result+=count; result+=last; //将last设为新数字 count=1; last=temp.charAt(j); } } //这样会有问题,如果一直都是同一个数字,就不会触发!=last了 //要手动把这个数字加上 result+=count; result+=last; data[i]=result; } return data[n]; }