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 |
|
|
|