看板 C_and_CPP 關於我們 聯絡資訊
: : 若我沒有弄錯,這個解法還是需要用到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)