这道题提交了三次才编译通过,主要错误在对报数数组最后一个数字的处理上
即在getCountSay函数的for循环之后,忘记处理count不等于0的情况
if(count!=0)newNum+=count+""+oldNum.charAt(i-1);
以下是源码,这个算法比较直接,效率一般,应该还有更简便的方法。
class Solution {
public String countAndSay(int n) {
String newString = "";
for(int i=1;i<=n;i++){
newString = getCountSay(newString);
}
return newString;
}
public String getCountSay(String oldNum){
String newNum ="";
int count = 1;
if(oldNum.length()==0)return "1";
int i=1;
for(;i<oldNum.length();i++){
if(oldNum.charAt(i)==oldNum.charAt(i-1))count++;
else{newNum+=count+""+oldNum.charAt(i-1);count=1;}
}
if(count!=0)newNum+=count+""+oldNum.charAt(i-1);
return newNum;
}
}
网友评论