题目
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.
思路
写一个递归就是咯、读取当前的String,即形成新的String。
代码
public class Solution {
//子函数,读取当前的String形成新的String
public String countAndSay_Sub (String s){
String result = "";
int count = 1;
int i = 0;
while(i < s.length()){
while((i + count) < s.length() && s.charAt(i) == s.charAt(i + count)) ++ count;
result = result + count + s.charAt(i);
i = i + count;
count = 1;
}
return result;
}
public String countAndSay(int n) {
String result = "1";
for(int i = 1 ; i < n ; ++ i){
result = countAndSay_Sub(result);
}
return result;
}
}