给定一个正整数 n ,输出外观数列的第 n 项
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。
https://leetcode-cn.com/problems/count-and-say
示例1:
示例2:
提示:
Java解法
package sj.shimmer.algorithm.ten_2;
/**
* Created by SJ on 2021/2/13.
*/
class D20 {
public static void main(String[] args) {
System.out.println(countAndSay(4));
}
public static String countAndSay(int n) {
if (n == 0) {
return "";
}
String result = "1";
while (n - 1 > 0) {
result = createNext(result);
n--;
}
return result;
}
public static String createNext(String s) {
if (s == null || "".equals(s)) {
return "";
}
StringBuilder result = new StringBuilder();
int num = 1;
char c = s.charAt(0);
for (int i = 1; i < s.length(); i++) {
if (c == s.charAt(i)) {
num++;
} else {
result.append(num);
result.append(c);
num = 1;
c = s.charAt(i);
}
}
result.append(num);
result.append(c);
return result.toString();
}
}