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, generate the nth term of the count-and-say sequence.
Note: Each term of the sequence of integers will be represented as a string.
class Solution {
public String countAndSay(int n) {
if(n <= 1)
return "1";
else{
String str = countAndSay(n-1); //递归
char[] say = str.toCharArray();
int count = 1; //计算重复多少个
int index = 0; //重复值的位置
String result = ""; //结果
for(int i=1;i<say.length;i++){
if(say[index] == say[i])
count++;
else{
result = result + String.valueOf(count) + String.valueOf(say[index]); //不一样,将前一个加进result
index = i; //记录当前第一个不重复的数字的位置
count = 1;
}
}
result = result + String.valueOf(count) + String.valueOf(say[index]); //最后一次循环结束,并没有加进result里面,这里加进去
return result;
}
}
}