对字符串进行统计,进行遍历,若发现是相等的字符则将相等字符的个数加1
package com.zj.IString;
import com.zj.CLinkedList.Problem2;
/**
* Author jzhou7
* Date 2020/8/18
* 外观数列
*/
public class Problem38 {
public String countAndSay(int n) {
if(n==1) return "1";
String s = "1";
for(int i=2;i<=n;i++){
s = fun(s);
System.out.println(i+"--->"+s);
}
return s;
}
public String fun(String s){
StringBuffer sb = new StringBuffer();
// 计算每个字符串中相等字符出现的个数
int count = 0;
char c = s.charAt(0);
for (int i=0;i<s.length();i++){
// 相等字符
if(c==s.charAt(i)){
count++;
} else {// 不等字符
sb.append(count).append(c);
// 将count止为1
c = s.charAt(i);
count=1;
}
}
sb.append(count).append(c);
return sb.toString();
}
public static void main(String[] args) {
Problem38 problem38 = new Problem38();
String s = problem38.countAndSay(5);
System.out.println(s);
}
}