規律很少說,能夠去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; } }