Leetcode记录-Q38-外观数列

解题思路

典型的递归调用

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

循环调用前一次的结果,进行计数。当n=1时,递归结束,返回1.

代码

class Solution {
    public String countAndSay(int n) {
         if (n == 1) {
            return "1";
        }
        String s = countAndSay(n - 1);
        StringBuilder sb = new StringBuilder();
        int cnt = 0;
        for (int i = 0; i < s.length(); i++) {
            if (i == s.length() - 1) {
                cnt++;
                sb.append(cnt).append(s.charAt(i));
            } else if (s.charAt(i) == s.charAt(i + 1)) {
                cnt++;
                continue;
            } else {
                sb.append(cnt+1).append(s.charAt(i));
                cnt=0;
            }
        }
        return sb.toString();
    }
}
原文地址:https://www.cnblogs.com/jason0529/p/13678078.html