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.
Example 1:
Input: 1 Output: "1"
Example 2:
Input: 4 Output: "1211"
问题描述:将数字从1开始,将当前数字转化为口语对应的数字。比如1口语是1个1,记作11;11读作2个1,记作21;21读作1个2,1个1,记作1211……;'1'是第一个数字,根据输入的数字n,计算第n个这样的序列。
分析:第n个序列根据第n-1个序列得到,第n-1个序列根据第n-2个序列得到,....,第2个序列根据第1个序列得到。第一个序列为“1”。所以从2开始循环,内存循环为上一次循环得到的序列str。
class Solution {
public String countAndSay(int n) {
String str = "1";
String result = "";
int count;
char c;
if(n < 1)
return null;
if(n == 1)
return "1";
if(n > 1){
for(int i = 2;i <= n;i++){
result = "";
c = str.charAt(0);
count = 0;
for(int j = 0;j < str.length();){
if(c == str.charAt(j)){
count++;
j++;
if(j == str.length()){
result = result + count + c;
}
}else if(j == str.length()-1){
result = result + count + c + "1" + str.charAt(j);
j++;
}else{
result = result + count + c;
c = str.charAt(j);
count = 1;
j++;
}
}
str = result;
}
}
return result;
}
}