Leetcode394——Decode String

文章作者:Tyan
博客:noahsnail.com ?|? CSDN ?|? 簡(jiǎn)書

1. 問(wèn)題描述

Given an encoded string, return it's decoded string.

The encoding rule is: k[encoded_string], where the encoded_string inside the square brackets is being repeated exactly k times. Note that k is guaranteed to be a positive integer.

You may assume that the input string is always valid; No extra white spaces, square brackets are well-formed, etc.

Furthermore, you may assume that the original data does not contain any digits and that digits are only for those repeat numbers, k. For example, there won't be input like 3a or 2[4].

Examples:

s = "3[a]2[bc]", return "aaabcbc".
s = "3[a2[c]]", return "accaccacc".
s = "2[abc]3[cd]ef", return "abcabccdcdcdef".

中文

給定一個(gè)經(jīng)過(guò)編碼的字符串柒瓣,返回其解碼字符串。編碼規(guī)則為:k[encoded_string],其中中括號(hào)內(nèi)的encoded_string被重復(fù)k次。注意k一定是正整數(shù)。

2. 求解

本題中明顯有括號(hào)的匹配問(wèn)題霸妹,因此需要使用棧來(lái)求解瞻赶。當(dāng)碰到右括號(hào)(])時(shí)维雇,字符串出棧赊舶,碰到左括號(hào)([)時(shí),保存左右括號(hào)內(nèi)的字符串([])赶诊,繼續(xù)出棧笼平,保存字符串重復(fù)次數(shù),直至棧為空或碰到非數(shù)字舔痪。要注意重復(fù)次數(shù)不是個(gè)位數(shù)寓调,將字符串重復(fù)之后壓入棧中。繼續(xù)處理剩余字符串锄码,同樣執(zhí)行上述過(guò)程夺英,直至處理完字符串晌涕。然后將棧中所有的字符出棧構(gòu)成結(jié)果字符串返回。

public class Solution {
    public String decodeString(String s) {
        int n = s.length();
        Stack<Character> stack = new Stack<Character>();
        String result = "";
        String temp = "";
        for (int i = 0; i < n; i ++) {
            char str = s.charAt(i);
            if (str != ']') {
                stack.push(str);
            } else {
                char ch = stack.pop();
                while (ch != '[') {
                    temp = ch + temp;
                    ch = stack.pop();
                }
                //字符串重復(fù)次數(shù)
                String times = "";
                while(!stack.isEmpty()) {
                    ch = stack.pop();
                    if(Character.isDigit(ch)) {
                        times = ch + times;
                    }else {
                        stack.push(ch);
                        break;
                    }
                }
                //重復(fù)字符串痛悯,壓入棧中
                for(int j = 0; j < Integer.parseInt(times); j++) {
                    for(int k = 0; k < temp.length(); k++) {
                        stack.push(temp.charAt(k));
                    }
                }
                temp = "";
            }
        }
        while(!stack.isEmpty()) {
            result = stack.pop() + result;
        } 
        return result;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末余黎,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子载萌,更是在濱河造成了極大的恐慌惧财,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扭仁,死亡現(xiàn)場(chǎng)離奇詭異垮衷,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)乖坠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門搀突,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人熊泵,你說(shuō)我怎么就攤上這事仰迁。” “怎么了戈次?”我有些...
    開(kāi)封第一講書人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵轩勘,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我怯邪,道長(zhǎng)绊寻,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任悬秉,我火速辦了婚禮澄步,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘和泌。我一直安慰自己村缸,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布武氓。 她就那樣靜靜地躺著梯皿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪县恕。 梳的紋絲不亂的頭發(fā)上东羹,一...
    開(kāi)封第一講書人閱讀 52,328評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音忠烛,去河邊找鬼属提。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的冤议。 我是一名探鬼主播斟薇,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恕酸!你這毒婦竟也來(lái)了堪滨?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤尸疆,失蹤者是張志新(化名)和其女友劉穎椿猎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體寿弱,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡犯眠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了症革。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片筐咧。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖噪矛,靈堂內(nèi)的尸體忽然破棺而出量蕊,到底是詐尸還是另有隱情,我是刑警寧澤艇挨,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布残炮,位于F島的核電站,受9級(jí)特大地震影響缩滨,放射性物質(zhì)發(fā)生泄漏势就。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一脉漏、第九天 我趴在偏房一處隱蔽的房頂上張望苞冯。 院中可真熱鬧,春花似錦侧巨、人聲如沸舅锄。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)皇忿。三九已至,卻和暖如春坦仍,著一層夾襖步出監(jiān)牢的瞬間禁添,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工桨踪, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人芹啥。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓锻离,卻偏偏與公主長(zhǎng)得像铺峭,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子汽纠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc閱讀 2,873評(píng)論 0 0
  • 背景 一年多以前我在知乎上答了有關(guān)LeetCode的問(wèn)題, 分享了一些自己做題目的經(jīng)驗(yàn)卫键。 張土汪:刷leetcod...
    土汪閱讀 12,748評(píng)論 0 33
  • 20歲以前靠夢(mèng)想活著,60歲以前靠現(xiàn)實(shí)活著虱朵,60歲以后靠回憶活著莉炉。什么時(shí)間做什么事兒,該做什么事兒就做什么事兒碴犬。經(jīng)...
    山東慧恩賀守金閱讀 152評(píng)論 0 0
  • 凌晨?jī)牲c(diǎn)四十入睡絮宁,六點(diǎn)半醒來(lái),記錄睡眠三小時(shí)三十八分服协,但深度睡眠只有四十七分鐘绍昂,估計(jì)大巴車上睡覺(jué)沒(méi)記錄下來(lái)。躺到七...
    偉航閱讀 440評(píng)論 0 0
  • 處此紛世偿荷,塵囂厭人窘游,雞飛狗跳,應(yīng)守住自己一方心境跳纳。無(wú)所謂失忍饰,無(wú)所謂得,我自安足便好寺庄!累了那就歇了艾蓝。歸去,也無(wú)風(fēng)雨也...
    孤磊曉月閱讀 125評(píng)論 0 0