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 nth sequence.
Note: The sequence of integers will be represented as a string.
题目:先给出第一个数1,读出来1个1,得到11;第二个在读出来2个1,得到21;第三个读出来,一个2一个1,1211;以此类推,输出第n个数。
思路:题目很简单,按照他的要求来就行,组装串的时候可以用StringBuffer,每个数字的个数加上数字。
public String countAndSay(int n) {
StringBuffer str = new StringBuffer("1");
int num = 1;
while(num < n) {
int[] nums = new int[str.length()];
for(int i = 0; i < str.length();i++) {
nums[i] = str.charAt(i) - '0';
}
str.delete(0,str.length());
int count = 1;
if(nums.length == 1) {
str.append(1).append(1);
num++;
continue;
}
for(int j = 0;j <= nums.length - 1;j++) {
if(j+1 > nums.length - 1 || nums[j] != nums[j+1]) {
str.append(count).append(nums[j]);
count = 1;
} else {
count++;
}
}
num++;
}
return str.substring(0);
}