天天看點

【劍指offer】字元串轉整數

轉載請注明出處:

<dl></dl>

<dt>題目描述:</dt>

<dd></dd>

将一個字元串轉換成一個整數,要求不能使用字元串轉換整數的庫函數。

<dt>輸入:</dt>

輸入可能包含多個測試樣例。

對于每個測試案例,輸入為一個合法或者非法的字元串,代表一個整數n(1&lt;= n&lt;=10000000)。

<dt>輸出:</dt>

對應每個測試案例,

若輸入為一個合法的字元串(即代表一個整數),則輸出這個整數。

若輸入為一個非法的字元串,則輸出“My God”。

<dt>樣例輸入:</dt>

<dt>樣例輸出:</dt>

    關于這道題目,題目本身還是不錯的,真正核心的代碼也就那麼兩行,大部分代碼基本都在做非法輸入的檢查。

    最近做這幾道題目,對九度背景的測試用例有點無語了,這道題目的測試用例應該有問題,我寫的代碼自己測試了很多種不同的非法輸入以及合法輸入,都沒問題,但是在九度OJ上隻有第四條測試用例通過,其他四條全部WA,害的我搞了一個晚上,後來下了個别人AC的代碼,拿來測試了下,結果各種非法的輸入都沒處理,很多非法的輸入,得到的都是些五花八門的答案。

    先貼上代碼,大家幫我看下有木有沒考慮到的地方:

    最後查到有些人講類似123abc這樣的輸入也作為合法輸入,這樣得到的結果是123,去掉了後面的非法字元,我就索性又把程式改了下,把這種情況納入合法輸入的範圍内,改成如下代碼:

    這次居然前三個測試用例通過了,後面兩個WA了,搞得我暈頭轉向,下載下傳了個别人的AC代碼,一眼看過去就感覺很多非法輸入沒有考慮到,測試了下,确實很多非法的輸入,得到的結果五花八門。貼出來大家瞅瞅,分析下看是不是這道題的背景測試用例有問題。

    别人AC的代碼:

    無力吐槽了,稀裡糊塗的搞了整整一個晚上,竟然是這樣的結果。我還是覺得第一次的代碼是最正确的,不應該将類似123abc這樣的輸入納入合法的輸入範圍中。