ety
|
分享:
▲
▼
看了一下, 我認為你還是用我的方法會比較好唷! 把長度除以二, 只將後半段反轉順序再比對, 很快! 若用他們的方法, 整個字串反轉再比對不但記憶體用得比較兇, 連時間複雜度 big O 都增加許多! 而且拿 Madam I'm Adam 來當例子好了, 用我的方法, 是比對 Madam 與 madA m! 他們的方法則是比對整個字串, Madam I'm Adam 與 madA m'I madaM, 想想看, 一定更麻煩的...
|
|
x0
[4 樓]
From:臺灣和信超媒體寬帶網 | Posted:2007-06-13 01:53 |
|
|
gamewalk
|
分享:
▲
▼
下面是引用ety於2007-06-13 01:53發表的 : 看了一下, 我認為你還是用我的方法會比較好唷! 把長度除以二, 只將後半段反轉順序再比對, 很快! 若用他們的方法, 整個字串反轉再比對不但記憶體用得比較兇, 連時間複雜度 big O 都增加許多! 而且拿 Madam I'm Adam 來當例子好了, 用我的方法, 是比對 Madam 與 madA m! 他們的方法則是比對整個字串, Madam I'm Adam 與 madA m'I madaM, 想想看, 一定更麻煩的... 不過ety大大...我有個疑問 , 我剛剛算了一下 , 這個字串有14個字元 , 長度除以2 切割後... 一個為 : Madam I 另一個為 : 'm Adam 反轉後 madA m' 兩者都去掉空白以及其他符號同時再把它們都轉成大寫.. MADAMI MADAM 這樣子比對應該會被認為不對稱吧....因為前者多了一個 I ( 還是說我誤解你意思了 , 如果有弄錯的話...抱歉^^" ) 還有其實我說的作法是只要用一個while迴圈就可以達成的 , 一取得字串長度就可以開始比了...而且並非比完整個字串 ...
[ 此文章被gamewalk在2007-06-13 04:01重新編輯 ]
|
|
x0
[5 樓]
From:臺灣永大數位動力公司 | Posted:2007-06-13 03:50 |
|
|
ety
|
分享:
▲
▼
要先除去符號, 空白以及轉變大小寫唷!
"Madam I'm Adam" 會變為 "MadamImAdam", 就如我之前說的, 字串一分為二且反轉後半段, 只要比對 Madam 與 madAm! (MadamImAdam長度為十一, 除二為五, 不考慮餘數, 所以 I 不用管)
我把我的方法實作出來了, 的確可行!
我的方法花了兩個變數空間, 各儲存了長度為5的字串, 你的方法是存完整字串的長度耶... 我的方法比對時是比對兩個長度為5的字串, 你的是比對完整字串耶...
不管你取得長度後是一個字元對一個字元比對, 還是整個字串比對, 我的用量都比你少! 就算用迴圈, 我跑的圈數也比你少!
你有沒有聽過遞迴這種程式寫法呢? 這種方法的程式碼通常比一般方法的程式碼來得少, 也簡單. 但時間複雜度與記憶體的用量也比一般用法驚人...
所以就算精簡程式碼, 也不見得有效率唷
|
|
x0
[6 樓]
From:臺灣和信超媒體寬帶網 | Posted:2007-06-13 20:00 |
|
|
|