LeetCode 9. Palindrome Number

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

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

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


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

測試代碼:

LeetCode 9. Palindrome Number_第1张图片
長度為1的測試用例

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

LeetCode 9. Palindrome Number_第2张图片
hard-code 判斷 x 數字長度是否為 1

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

LeetCode 9. Palindrome Number_第3张图片
重構測試代碼的驗證 function

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

測試代碼:

LeetCode 9. Palindrome Number_第4张图片
x 長度為 2 的測試用例

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

LeetCode 9. Palindrome Number_第5张图片
兩個 flag 一個從頭,一個從尾往中間巡覽

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

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

  • 新增測試用例:x 長度為 2,應為非回文的情境,通過!
LeetCode 9. Palindrome Number_第6张图片
長度為 2,非回文的整數
  • 新增測試用例:x 長度為 3,應為回文的情境,通過!
LeetCode 9. Palindrome Number_第7张图片
長度為 3, 回文的整數
  • 新增測試用例:x 長度為 3,應為非回文的情境,通過!
LeetCode 9. Palindrome Number_第8张图片
長度為3, 非回文的整數

通過 LeetCode 所有測試案例

LeetCode 9. Palindrome Number_第9张图片
pass all test cases at LeetCode

摘要整理

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

GitHub commit history: LeetCode 9. Palindrome Number

你可能感兴趣的:(LeetCode 9. Palindrome Number)