Ruby程序我有紅寶石字符串比較代碼中我得到一些奇怪的輸出用於字符串比較
def matchval_not_pos(str1, str2)
a1, a2 = str1.chars, str2.chars
return 0 if a1 == a2
[a1.size, a2.size].min.times do |i|
if a1[i] == a2[i]
a1.delete_at(i)
a2.delete_at(i)
end
end
a1.reduce(0) do |t,c|
i = a2.index(c)
if i
inc = 1
a2.delete_at(i)
else
inc = 0
end
t + inc
end
end
我上撬控制檯獲得輸出
=> :matchval_not_pos
[12] pry(main)> matchval_not_pos("abc","abc")
=> 0
[13] pry(main)> matchval_not_pos("abcd","abc")
=> 1
[14] pry(main)> matchval_not_pos("abcde","abc")
=> 1
[15] pry(main)> matchval_not_pos("abcdef","abc")
=> 1
[16] pry(main)> matchval_not_pos("abcdefgh","abc")
=> 1
[17] pry(main)> matchval_not_pos("abcdefgh","abcdefghi")
=> 4
[18] pry(main)> matchval_not_pos("abcdefgh","abcdefghijklmn")
=> 4
[19] pry(main)> matchval_not_pos("abcdefghijklmn","abcdefghijklmn")
=> 0
[20] pry(main)> matchval_not_pos("abcdefghijklmnop","abcdefghijklmn")
=> 7
[21] pry(main)> matchval_not_pos("abcdefghijklmnop","abcdefghijklmnop")
=> 0
[22] pry(main)> matchval_not_pos("abcdefghijklmnop","abcdefghijklmnopqw")
=> 8
[23] pry(main)> matchval_not_pos("abcdefghijklmnop","abcdefghijklmnop")
=> 0
我不能排序這就是爲什麼我得到這個輸出。有人能幫助我嗎?
你期待什麼輸出_were_? – 2015-02-06 12:06:27
如果matchval_not_pos(「abc」,「abc」) => 0 &pry(main)> matchval_not_pos(「abcde」,「abc」)=> 2如果直到3個字符串匹配,在str1中增加charector字符串like(「abcdefg」,「abcd」)它給了我錯誤的輸出 – user4537116 2015-02-06 12:09:53
你可能做的一件事是將'matchval_not_pos'分解成更小的方法併爲每種方法編寫單元測試。實際上可能會幫助您更快地進行調試,此外您還可以測試所有邊界案例。 – aceofbassgreg 2015-02-06 15:23:02