2020年7月12日 星期日

[LeetCode] 38. Count and Say* 解題思路 (Easy)



這題計算連續字符串,組成為 重複次數+數字。




LeetCode 題目連結

 

https://leetcode.com/problems/count-and-say/

題目


The count-and-say sequence is the sequence of integers with the first five terms as following:
1.     1
2.     11
3.     21
4.     1211
5.     111221
1 is read off as "one 1" or 11.
11 is read off as "two 1s" or 21.
21 is read off as "one 2, then one 1" or 1211.
Given an integer n where 1 ≤ n ≤ 30, generate the nth term of the count-and-say sequence. You can do so recursively, in other words from the previous member read off the digits, counting the number of digits in groups of the same digit.
Note: Each term of the sequence of integers will be represented as a string.

 

Accept 作法



Runtime: 12 ms
Memory: 40.2 MB

Java 程式碼

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

更多 LeetCode 相關資源

 

複習程式面試書籍


除了 LeetCode 練習外,我也入手了這本,題庫來自真正的面試,並非摘自教科書。它們反映出頂尖公司真正會出的題目,你可以藉此做好充分準備
需要的話可以看看,寫得很仔細。


 

書名:提升程式設計師的面試力:189道面試題目與解答

 



相關 LeetCode文章一律會放在 程式解題 標籤分類,歡迎持續追蹤。


沒有留言:

張貼留言