题目
报数指的是,按照其中的整数的顺序进行报数,然后得到下一个数。如下所示:
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”.
分析
想得到下一个数是多少,首先要循环当前数,在循环的同时对相同的数进行计数,当碰到两个数不同时进行字符串拼接(数目+当前数),计数置为1。
代码
public class Solution {
/**
* @param n the nth
* @return the nth sequence
*/
public String countAndSay(int n) {
// Write your code here
String s = "1";
int i = 1;
while (i < n){
//进行
s = count(s);
i ++;
}
return s;
}
public String count(String a){
char[] chars = a.toCharArray();
//计数
int num = 1;
StringBuffer buffer = new StringBuffer();
for(int i = 1; i < chars.length ; i++){
if (chars[i-1] == chars[i]){
num++;
}else {
buffer.append(num + String.valueOf(chars[i-1]));
num = 1;
}
}
//拼接最后一个
buffer.append(num + String.valueOf(chars[chars.length - 1]));
return buffer.toString();
}
}