报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:
1, 11, 21, 1211, 111221, ...
1
读作 "one 1"
-> 11
.
11
读作 "two 1s"
-> 21
.
21
读作 "one 2, then one 1"
-> 1211
.
给定一个整数 n
, 返回 第 n
个顺序
给定 n = 5
, 返回 "111221"
.1211
读作 "one 1,one 2, then two 1s"
-> 111221
.
【不太有思路,借鉴网上代码得。】
public class Solution {
/**
* @param n the nth
* @return the nth sequence
* 我们去数连续的数字,并在结果中对于每一个连续相同的字符串输出为”个数+字符“;
*/
public String countAndSay(int n) {
// Write your code here
String oldString = "1";
while (--n > 0) {
StringBuilder sb = new StringBuilder();
char [] oldChars = oldString.toCharArray();
for (int i = 0; i < oldChars.length; i++) {
int count = 1;
while ((i+1) < oldChars.length && oldChars[i] == oldChars[i+1]) {
count++;
i++;
}
sb.append(String.valueOf(count) + String.valueOf(oldChars[i]));//追加个数和字符
}
oldString = sb.toString();
}
return oldString;
}
}