The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 111221, ...
1
is read off as "one 1"
or 11
.11
is read off as "two 1s"
or 21
.21
is read off as "one 2
, then one 1"
or 1211
.
Given an integer n, generate the nth sequence.
Note: The sequence of integers will be represented as a string.
public class Solution {
/**It is simple problem.
* @author Averill Zheng
* @version 2014-06-07
* @since JDK 1.7
*/
public String countAndSay(int n) {
String result = "1";
for(int i = 1; i < n; ++i){
StringBuffer resultBuffer = new StringBuffer();
int length = result.length();
char currentChar = result.charAt(0);
int count = 0;
for(int j = 0; j < length; ++j){
if(currentChar != result.charAt(j)){
resultBuffer.append(count);
resultBuffer.append(currentChar - '0');
currentChar = result.charAt(j);
count = 1;
}
else
++count;
}
resultBuffer.append(count);
resultBuffer.append(currentChar - '0');
result = resultBuffer.toString();
}
return result;
}
}