LeetCode第38题:报数(简单)
- 题目:报数序列是一个整数序列,按照其中的整数的顺序进行报数,得到下一个数。
- 解法一:用递归的办法,虽然过了,但是结果不是很好。
class Solution {
public String countAndSay(int n) {
if(n>30 || n<1) return "";
String ans=dg(n);
return ans;
}
public String dg(int n){
if(n==1){
return "1";
}else if(n==2){
return "11";
}else{
String s=dg(n-1);
String ss="";
int k=1;
for(int i=0;i<s.length();i++){
while(i<s.length()-1 && s.charAt(i+1) == s.charAt(i)){
k++;
i++;
}
ss=ss+k+s.charAt(i);
k=1;
}
return ss;
}
}
}

- 解法二:也是递归思想,builder.append(count).append(pre);就写得比我的简洁的多。
public String countAndSay(int n) {
String str = "1";
for (int i = 2; i <= n; i++) {
StringBuilder builder = new StringBuilder();
char pre = str.charAt(0);
int count = 1;
for (int j = 1; j < str.length(); j++) {
char c = str.charAt(j);
if (c == pre) {
count++;
} else {
builder.append(count).append(pre);
pre = c;
count = 1;
}
}
builder.append(count).append(pre);
str = builder.toString();
}
return str;
}
作者:pphdsny
链接:https://leetcode-cn.com/problems/count-and-say/solution/38-bao-shu-java-xun-huan-by-pphdsny/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。