[問題] decode url string
這是我在面試某間公司時被問的問題
不過我沒有簽保密協定,所以透露題目跟大家討論一下應該okay吧 :p
URL中的"%"符號及其後面的兩個字元可以代表某些特殊符號
如:"%20"代表空白" "
若給予 "%??" 與其代表的值的對應
請寫出一個程式能decode url
這個題目比較複雜的地方在於下面這種狀況:
假設"%ab"代表"2"
則"%%ab0"會先decode成"%20", 再decode成" "
所以,若輸入 "http://www.url.com/%%ab0123"
則要輸出:"http://www.url.com/ 123"
我用recursive的方式寫了一個小程式
後來主考官要我用非recursive的方式再寫一次
我寫得有一點卡 XD
後來回家自己再寫一次非遞回的版本,
寫是寫出來了,但是竟然寫了一個小時,
主考官當初這題連同講解題目可是只給我10min解題 orz...
我大致上的解法(非遞迴)是用stack來解,
遇到%就inital一個stack,
然後開始判斷後面哪些字元要做push, pop
當stack為空時,就代表目前這個部份的string 已被decode
Ex:
string cur_word stack 說明
%%ab0123 % [%] push % to stack
%ab0123 % [%%] push % to stack
ab0123 a [%%a] push a to stack
b0123 b [%%ab] push b to stack
[%] pop %, a, b, decode %ab to 2
[%2] push 2 to stack
0123 0 [%20] push 0 to stack
[] pop %, 2, 0, decode %20 to " "
stack size is zero. Finish decoding this part
拿出來跟版友們討論一下,不知道各位有沒有什麼比較好的解法呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 75.102.87.217
※ 編輯: Aligu1009 來自: 75.102.87.217 (10/15 23:13)
推
10/15 23:05, , 1F
10/15 23:05, 1F
→
10/15 23:07, , 2F
10/15 23:07, 2F
→
10/15 23:14, , 3F
10/15 23:14, 3F
→
10/15 23:17, , 4F
10/15 23:17, 4F
推
10/15 23:32, , 5F
10/15 23:32, 5F
→
10/15 23:32, , 6F
10/15 23:32, 6F
→
10/15 23:33, , 7F
10/15 23:33, 7F
→
10/15 23:35, , 8F
10/15 23:35, 8F
推
10/15 23:39, , 9F
10/15 23:39, 9F
推
10/16 00:02, , 10F
10/16 00:02, 10F
→
10/16 00:12, , 11F
10/16 00:12, 11F
→
10/16 00:13, , 12F
10/16 00:13, 12F
推
10/16 00:15, , 13F
10/16 00:15, 13F
→
10/16 00:17, , 14F
10/16 00:17, 14F
→
10/16 00:17, , 15F
10/16 00:17, 15F
推
10/16 11:08, , 16F
10/16 11:08, 16F
※ 編輯: Aligu1009 來自: 68.232.127.230 (10/16 23:14)
討論串 (同標題文章)
以下文章回應了本文 (最舊先):
完整討論串 (本文為第 1 之 5 篇):