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 的整數,應為回文

測試代碼:

長度為1的測試用例

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

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

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

重構測試代碼的驗證 function

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

測試代碼:

x 長度為 2 的測試用例

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

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

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

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

  • 新增測試用例:x 長度為 2,應為非回文的情境,通過!
長度為 2,非回文的整數
  • 新增測試用例:x 長度為 3,應為回文的情境,通過!
長度為 3, 回文的整數
  • 新增測試用例:x 長度為 3,應為非回文的情境,通過!
長度為3, 非回文的整數

通過 LeetCode 所有測試案例

pass all test cases at LeetCode

摘要整理

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

GitHub commit history: LeetCode 9. Palindrome Number

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容