题目描述:
The count-and-say sequence is the sequence of integers beginning as follows:
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, generate the n th sequence.
Note: The sequence of integers will be represented as a string.
解题思路:
- 说实话,这道题的难点在于理解题目的意思
- 参数 n 表示读的次数
- 当 n = 1 时,结果为 1
- 当 n = 2 时,结果为 11,表示 1 个 1
- 当 n = 3 时,结果为 21,表示 2 个 1
- 当 n = 4 时,结果为 1211,表示 1 个 2,1 个 1
代码如下:
public String countAndSay(int n) {
String s = "1";
// i 表示当前的次数
int i = 1;
while(i++ < n){
int count = 1;
StringBuilder res = new StringBuilder();
// 遍历当前字符串,如果不相等,就进行更新字符串,相等就计数
for(int j = 0; j < s.length() - 1; j++){
if(s.charAt(j) != s.charAt(j + 1)){
res.append(count);
res.append(s.charAt(j));
count = 1;
}else
count++;
}
res.append(count);
res.append(s.charAt(s.length() - 1));
s = res.toString();
}
return s;
}