leetcode 38 Count and Say ---java

这道题主要就是求一个序列,题目得意思就是

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 并不一样,前者要优于后者。

原文地址:https://www.cnblogs.com/xiaoba1203/p/5591938.html