leetcode 報數 java

規律很少說,能夠去LeetCode看評論。java

其實我很早就想到了解法,可是用 JAVA 我比較陌生,一直用代碼實現不瞭解法。app

幾個月沒作題,腦子比較遲鈍,這個題目作了大概 3 小時 。ide

思路:ui

模擬規律,用循環作。code

 

1.初始化 str = 「1」;blog

 

2.一個循環,循環的層數便是 n 。string

 

3.用一個 pre 記錄 str 的第一個值。用一個 count = 1,表明目前只有一個重複的 pre 。設置一個stringBulider 類,爲 ans。io

 

4.再用一個循環,循環的層數表明的 str 的長度 - 1 (下標從 1 開始, 由於咱們設置了 一個 pre,這個 pre 就是 str 的第 0 個元素)。    在這個循環裏面去設置一個 c ,c 與pre 相等的時候,count ++ 。 若是不相等,用 ans.append(count).append(pre)。 而後 pre = c, count = 1;class

 

5.讓str = ans.toString 。 繼續作循環循環

 

6.第一個循環結束,返回str,便是答案。

 

 

和 JAVA 有關的知識點:

1. stringBulider 類, append 方法。

2.String 類,charAt 方法。 toString 方法。

 

 

 

經過代碼:

class Solution {
    public String countAndSay(int n) {
        String str = "1";
        for(int i = 0; i < n-1; i++)
        {
            int count = 1;
            StringBuilder ans = new StringBuilder();
            char pre = str.charAt(0);
            for(int j = 1; j < str.length(); j++){
                char c = str.charAt(j);
                if(c == pre){
                    count++;
                }else{
                    ans.append(count).append(pre);
                    pre = c;
                    count = 1;
                }
            }
            ans.append(count).append(pre);
            str = ans.toString();
        }
        return str;
    }
}
相關文章
相關標籤/搜索