TDDC#

LeetCode 9. Palindrome Number

2017-03-15  本文已影响12人  就是91

LeetCode 第九題 Palindrome Number ,判斷一個數字是否為「回文」。

Determine whether an integer is a palindrome. Do this without extra space.

題目解釋:給一個整數 x,如果回文則回傳 true。
[註] 盡可能節省使用的記憶體。


Step 1: 新增測試用例,當 x 為長度為 1 的整數,應為回文

測試代碼:

長度為1的測試用例

生產代碼:將 x 轉成 char array 後判斷長度是否為 1。

hard-code 判斷 x 數字長度是否為 1

重構測試代碼驗證的部分:[Extract Method] ShouldBePalindrome()

重構測試代碼的驗證 function

Step 2: 新增測試用例,x 長度為 2,且為回文

測試代碼:

x 長度為 2 的測試用例

生產代碼:標記兩個 flag,從 array 開頭與結尾往中間巡覽並比較是否相等,當不同時,則代表該值「非回文」。

兩個 flag 一個從頭,一個從尾往中間巡覽

演算法的實現已一步到位,因為不需要其他測試案例來驅動出新的或原本不存在於生產代碼的商業邏輯。

Step 3: 新增其他預計應該通過的測試用例

長度為 2,非回文的整數 長度為 3, 回文的整數 長度為3, 非回文的整數

通過 LeetCode 所有測試案例

pass all test cases at LeetCode

摘要整理

測試案例挑選時,我刻意避開了 0,1,2,3 之類的數字當案例,原因是在偵錯時,值跟 index 可能為同一個數字,在 IDE 工具偵錯時,能減少不同資訊的值相同的情況,可以讓腦袋思考與溝通的負擔再小一點。

GitHub commit history: LeetCode 9. Palindrome Number

上一篇 下一篇

猜你喜欢

热点阅读