1. 程式人生 > 其它 >工具類 驗證資料庫連通性 - 驗證SQL執行是否成功

工具類 驗證資料庫連通性 - 驗證SQL執行是否成功

技術標籤:LeetCode棧leetcode資料結構

1.題目描述

給定一個經過編碼的字串,返回它解碼後的字串。
編碼規則為: k[encoded_string],表示其中方括號內部的 encoded_string 正好重複 k 次。注意 k 保證為正整數。
你可以認為輸入字串總是有效的;輸入字串中沒有額外的空格,且輸入的方括號總是符合格式要求的。
此外,你可以認為原始資料不包含數字,所有的數字只表示重複的次數 k ,例如不會出現像 3a 或 2[4] 的輸入。
示例 1:
在這裡插入圖片描述
示例 2:
在這裡插入圖片描述
示例 3:
在這裡插入圖片描述
示例 4:
在這裡插入圖片描述

2.思路

由於括號內巢狀括號,因此需要從內向外生成與拼接字串,這與棧的先入後出特性對應,設定陣列棧和字串棧。

碰到 ‘[’ 數字和當前字串入棧,碰到 ‘]’ 數字和字串出棧。

3.程式碼

class Solution {
public:
    string decodeString(string s) {
        string res = "";
        stack<int> nums;
        stack<string> strs;

        int num = 0;

        for(int i = 0;i < s.size();++i){
            if(s[i] >= '0' &&
s[i] <= '9'){ num = num * 10 + s[i] - '0'; } else if((s[i] >= 'a' && s[i] <= 'z') || (s[i] >= 'A' && s[i] <= 'Z')){ res += s[i]; } else if(s[i] == '['){ nums.push(num); num =
0; strs.push(res); res = ""; } else if(s[i] == ']'){ int times = nums.top(); nums.pop(); for(int j = 0; j < times; ++j){ strs.top() += res; } res = strs.top(); strs.pop(); } } return res; } };

4.複雜度分析

時間複雜度:O(n)
空間複雜度:O(n)