欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java 題解LeetCode38外觀數(shù)列示例

 更新時間:2023年08月01日 08:43:01   作者:一直流浪  
這篇文章主要為大家介紹了java 題解LeetCode38外觀數(shù)列示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

LeetCode 38. 外觀數(shù)列(難度:簡單)

題目鏈接:https://leetcode-cn.com/problems/count-and-say/

問題描述:

給定一個正整數(shù) n(1 ≤ n ≤ 30),輸出外觀數(shù)列的第 n 項。

注意:整數(shù)序列中的每一項將表示為一個字符串。

「外觀數(shù)列」是一個整數(shù)序列,從數(shù)字 1 開始,序列中的每一項都是對前一項的描述。前五項如下:

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

第一項是數(shù)字 1

描述前一項,這個數(shù)是 1 即 “一個 1 ”,記作 11

描述前一項,這個數(shù)是 11 即 “兩個 1 ” ,記作 21

描述前一項,這個數(shù)是 21 即 “一個 2 一個 1 ” ,記作 1211

描述前一項,這個數(shù)是 1211 即 “一個 1 一個 2 兩個 1 ” ,記作 111221

示例 1:

輸入: 1
輸出: "1"
解釋:這是一個基本樣例。

示例 2:

輸入: 4
輸出: "1211"
解釋:當 n = 3 時,序列是 "21",其中我們有 "2" 和 "1" 兩組,"2" 可以讀作 "12",也就是出現(xiàn)頻次 = 1 而 值 = 2;類似 "1" 可以讀作 "11"。所以答案是 "12" 和 "11" 組合在一起,也就是 "1211"。

解法一:暴力法

按照題目思路,一輪一輪遍歷字符串,得到最后結果。

class Solution {
    public String countAndSay(int n) {
        String num = "1";
        String result = "1";
        char a = 'a';
        int flag = 0;
        for(int i = 1;i<n;i++) {
            result = "";
            a = 'a';
            flag = 0;
            while(true) {
                if(num.length() == 0) {
                    result = result + flag + a;
                    num = result;
                    break;
                }
                char c = num.charAt(0);
                if(a == c) {
                    flag++;
                }else {
                    if(a != 'a') {
                        result = result + flag + a;
                    }
                    a = c;
                    flag = 1;
                }
                num = num.substring(1);
            }
        }
        return result;
    }
}

解法二:遞歸法

利用遞歸的特性,依次計算出最終的結果

class Solution {
    public String countAndSay(int n) {
        if(n == 1) {
            return "1";
        }
        StringBuilder result = new StringBuilder();
        String s = countAndSay(n-1);
        int len = s.length();
        int a = 0;
        for(int i = 1;i<len +1;i++) {
            if(i == len) {
                return result.append(i-a).append(s.charAt(a)).toString();
            }else if (s.charAt(i)!=s.charAt(a)) {
                result.append(i-a).append(s.charAt(a));
                a = i;
            }
        }
        return result.toString();
    }
}

以上就是java外觀數(shù)列的詳細內(nèi)容,更多關于java外觀數(shù)列的資料請關注腳本之家其它相關文章!

相關文章

最新評論