描述
外观数列的前几项如下:
1, 11, 21, 1211, 111221, ...
1读作“1个1”或11
11读作“2个1“或者21
21读作”1个2,1个1“或者1211
给出一个整数n,请给出序列的第n项
每一次读都是以前一次为基础
注意:序列中的数字用字符串表示
示例1
输入:
2
返回值:
"11"
示例2
输入:
4
返回值:
"1211"
//刚开始一直没懂题的意思,其实就是假设第一个是1,然后每一次前面生成的,n指读多少次。
//n=1,就是1
//n=2,就是读两次,结果为11
//n=3,就是读3次,结果为21
//n=4,就是读4次,结果为1211,
//每一次读都是以前一次为基础
public class Solution {
public String countAndSay(int n) {
int i=1;
String result = "1";
while(i<n){
result = countOnce(result);
i++;
}
return result;
}
public String countOnce(String res){
char c = res.charAt(0);
int num=1;
StringBuilder sb = new StringBuilder();
for(int i=1;i<res.length();i++){
if(res.charAt(i)==c){
num++;
continue;
}
sb.append(String.valueOf(num)+c);
c=res.charAt(i);
num=1;
}
sb.append(String.valueOf(num)+c);
return sb.toString();
}
}