: : 若我沒有弄錯,這個解法還是需要用到stack,只是pop與push的規則很單純
: 按照前面 manlike 大提供方法,寫了一個沒用到 stack 版本,
: 不確定有沒有寫對,看看吧
果然只寫由後往前會變成一個答案各自表述 :p
我看了manlike大說的 "由後往前",寫的是下面的stack版本
其中沒有明確的宣告一個stack,但基本上就是把decURL當stack用
變數名稱以及其中宣告的函式直接沿用purpose大上一篇中所使用的
線上版:http://codepad.org/jFwpVJCY
string deURL1(const string &encURL) {
string decURL = "";
for (int i = encURL.size() - 1; i >= 0; --i) {
decURL = encURL[i] + decURL;
while (decURL[0] == '%') {
if (decURL.size() < 3) break;
char c1 = decURL[1], c2 = decURL[2]; // pop 2 chars from decURL
if (!isValid(c1, c2)) break;
char ch = toASCII(c1, c2);
decURL = ch + decURL.substr(3, decURL.size()-3); // push char to decURL
}
}
return decURL;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 68.232.127.230
※ 編輯: Aligu1009 來自: 68.232.127.230 (10/16 22:58)