这道题主要就是求一个序列,题目得意思就是
1 --> 11 --> 21 --> 1211 --> 111221 --> 312211 --> .....
1个1 2个1 1个2,1个1 1个1,1个2,2个1 3个1,2个2,1个1 依次类推
题目很简单,但是为了得到较好的结果,还是纠结了一段时间
public class countAndSay { public String countAndSay(int n) { String num = "1"; for(int m = 1; m<n ; m++ ){ num = getString(num); } return num; } public String getString(String num){ StringBuffer result = new StringBuffer(); int j = 0 , i = 0 , n = 0; while( i< num.length()){ char ch = num.charAt(i); while( j < num.length() && ch == num.charAt(j) ) j++; n = j - i; result.append(n).append(ch-'0'); i = j; } return result.toString(); } }
所以得出的结论就是 1:StringBuffer 在有些情况下优于 String 主要就是在对一个字符串进行多次操作的时候应该用StringBuffer,速度较快
2:就是ch == num.charAt(j) 与 num.charAt(j) == ch 并不一样,前者要优于后者。