The count-and-say sequence is the sequence of integers with the first five terms as following:
1. 1 2. 11 3. 21 4. 1211 5. 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 where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
Example 1:
Input: 1 Output: "1"
Example 2:
Input: 4 Output: "1211"
根据题意就是将上一个数据进行读取,第一个为1 第二给为对第一个数据进行读取 只有一个一 所以是 11.然后第三个是对11读取 有2个1 所以为21 以此一直类推
class Solution {
public String countAndSay(int n) {
String res = "1";
for (int i = 2; i <= n; i++) {
res = count(res);
}
return res;
}
public String count(String value) {
StringBuffer tmp = new StringBuffer();
char begin = value.charAt(0);
int number = 0;
for(int index=0;index<value.length();index++) {
if(index == 0) {
number = 1;
}else {
if(value.charAt(index) == begin) {
number++;
}else {
tmp.append(number).append(begin);
begin = value.charAt(index);
number = 1;
}
}
}
if(number!=0) {
tmp.append(number).append(begin);
}
return tmp.toString();
}
}