工具類 驗證資料庫連通性 - 驗證SQL執行是否成功
阿新 • • 發佈:2021-02-03
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)