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.
思路:写一个函数,可以产生下一个sequence的过程.设置一个count=1,while循环中判断连续相同字符的个数。当到不相同时,ans=ans+count+str.charAt(i-1);并将count重新设置为1,循环结束是别忘了ans=ans+count+str.charAt(i-1);然后在主函数里调用n-1次次函数就可以得出结果了.
代码如下(已通过leetcode)
public class Solution {
public String countAndSay(int n) {
if(n==1) return ""+1;
String temp=""+1;
for(int i=2;i<=n;i++) {
temp=getit(temp);
}
return temp;
}
public String getit(String str) {
String ans="";
int count=1;
int i=1;
while(i<str.length()) {
if(str.charAt(i)==str.charAt(i-1)) {
count++;
}
else {
ans=ans+count+str.charAt(i-1);
count=1;
}
i++;
}
ans=ans+count+str.charAt(i-1);
return ans;
}
}