Description
The count-and-say sequence is the sequence of integers with the first five terms as following:
-
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 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.
Examples
Example 1:
Input: 1
Output: “1”
Example 2:
Input: 4
Output: “1211”
解题思路
看了半天题hmmmmmm
其实是仿照斐波那契数列?
前面的数字和后面的字符串没什么关系……只是index而已
class Solution {
public String getAnswer(String str){
int i, j;
char[] s = str.toCharArray();
i = 0;
String answer = "";
int count = 0;
while(i < str.length() - 1){
count = 1;
while(i < str.length() - 1 && s[i] == s[i + 1]){
count ++;
i++;
}
answer += String.valueOf(count);
answer += s[i];
i++;
}
if(i == str.length() - 1)
answer = answer + "1" + s[i];
return answer;
}
public String countAndSay(int n) {
String[] answer = new String[30];
int i;
answer[0] = "1";
for(i = 1; i < n; i++){
answer[i] = getAnswer(answer[i - 1]);
}
return answer[n - 1];
}
}
其实这个速度很慢
摸了下快的
用的是StringBuffer Orz
素养还是不够
其他
- CCF终于考完了
- 不知道什么时候出成绩orz