p76 报数(leetcode 38)

一:解题思路

Time:O(1.3^n)或O(2^n) Space:O(1.3^n)或O(2^n)

二:完整代码示例 (C++版和Java版)

C++:

class Solution {
public:
    string countAndSay(int n) 
    {
        if (n < 1) return "";
        string s = "1";
        for (int i = 1; i < n; i++)
        {
            string sb = "";
            int count = 1;
            for (int p = 0; p < s.length(); p++)
            {
                if (p + 1 < s.length() && s[p] == s[p + 1])
                {
                    count++;
                }
                else
                {
                    sb += to_string(count) + s[p];
                    count = 1;
                }
            }
            s=sb;
        }

        return s;
    }
};

Java:

class Solution {
        public String countAndSay(int n) 
        {
               if(n<1) return null;
               String ret="1";
               for(int i=1;i<n;i++)
               {
                   int count=1;
                   StringBuilder sb=new StringBuilder();
                   for(int p=0;p<ret.length();p++)
                   {
                       if(p+1<ret.length() && ret.charAt(p)==ret.charAt(p+1))
                       {
                           count++;
                       }
                       else
                       {
                           sb.append(count).append(ret.charAt(p));
                           count=1;
                       }
                   }
                   ret=sb.toString();
               }
               
               return ret;
        }
    }

 

posted @ 2020-04-03 19:59  repinkply  阅读(186)  评论(0)    收藏  举报