https://oj.leetcode.com/problems/count-and-say/
感觉这是一个有点综合的题目了。
后一个的结果只跟它的前一个有关。可以用双变量轮换大法。
一些经典的算法:
1.单链表双指针方法
2.双变量轮换大法
3.删除重复元素的算法,指针从前向后依次移动。
4树结构考虑递归。
另外,给字符数个数的时候注意,这也是一个挺有意思的算法。
public class Solution {
public String countAndSay(int n) {
String prev="1";
if(n==1)return prev;
while(n-->1){
StringBuffer sb=new StringBuffer();
char c=prev.charAt(0);
int count=1;
for(int i=1;i<prev.length();i++){
if(prev.charAt(i)==c){
count++;
}else{
sb.append(count+""+c);
c=prev.charAt(i);
count=1;
}
}//for 数字符个数
sb.append(count+""+c);
prev=sb.toString();
}//while
return prev;
}
}