一、题目描述
二、解题思路
这道题目主要问题在于描述的不是很清楚,要花一点时间理解题目。
建议每次解题时把所有的示例都看一遍,再开始设计算法,这样会避免很多漏洞。
这道题讲得是下一个数列是对上一个数列的描述,这非常像一个递归的思想。而且数列的组成结构都是类似的,都是 出现次数+什么数字 的 叠加组合。因此这里可以用到递归的思想,获取上一个数列:
//递归的思想。对上一个数进行判断即可。
String str = countAndSay(n-1);
再对这个数列遍历即可。
三、编程实现
class Solution {
public String countAndSay(int n) {
if(n == 1)
return "1";
//递归的思想。对上一个数进行判断即可。
String str = countAndSay(n-1);
StringBuffer sb = new StringBuffer();
int count = 1;
for(int i = 0; i < str.length() - 1;i++){
if(str.charAt(i) == str.charAt(i + 1)){
count ++;
}
else{
sb.append(count).append(str.charAt(i));
count = 1;
}
}
sb.append(count).append(str.charAt(str.length()-1));
return sb.toString();
}
}
四、总结
StringBuffer不能用于String类型的返回值,所以返回时调用StringBuffer类的toString方法。