亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

問(wèn)題描述:

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

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

「外觀數(shù)列」是一個(gè)整數(shù)序列,從數(shù)字 1 開(kāi)始,序列中的每一項(xiàng)都是對(duì)前一項(xiàng)的描述。前五項(xiàng)如下:

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

第一項(xiàng)是數(shù)字 1

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

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

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

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

示例 1:

輸入: 1
輸出: "1"
解釋?zhuān)哼@是一個(gè)基本樣例。

示例 2:

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

解法一:暴力法

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

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;
    }
}

解法二:遞歸法

利用遞歸的特性,依次計(jì)算出最終的結(jié)果

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ù)列的詳細(xì)內(nèi)容,更多關(guān)于java外觀數(shù)列的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論