leetcode题目38. 外观数列(java)

2020-07-25  本文已影响0人  castlet

题目描述

给定一个正整数 n(1 ≤ n ≤ 30),输出外观数列的第 n 项。
注意:整数序列中的每一项将表示为一个字符串。
「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。前五项如下:

1.     1
2.     11
3.     21
4.     1211
5.     111221

代码

public String countAndSay(int n) {
    if (n == 1) {
        return "1";
    }
    String str = countAndSay(n - 1); // 递归
    StringBuilder result = new StringBuilder();
    int a = 0;
    for (int i = 0; i <= str.length(); i++) {
        if (i == str.length()) {
            return result.append(i - a).append(str.charAt(a)).toString();
        } else  if (str.charAt(i) != str.charAt(a)) {
            result.append(i - a).append(str.charAt(a));
            a = i;
        }
    }
    return result.toString();
}
上一篇 下一篇

猜你喜欢

热点阅读