LeetCode 第九題 Palindrome Number ,判斷一個數字是否為「回文」。
Determine whether an integer is a palindrome. Do this without extra space.
題目解釋:給一個整數 x,如果回文則回傳 true。
[註] 盡可能節省使用的記憶體。
[註] 盡可能節省使用的記憶體。
Step 1: 新增測試案例,當 x 為長度為 1 的整數,應為回文
測試代碼:
生產代碼,將 x 轉成 char array 後判斷長度是否為 1。
重構測試代碼驗證的部分:[Extract Method] ShouldBePalindrome()
Step 2: 新增測試案例,x 長度為 2,且為回文
測試代碼:
生產代碼:標記兩個 flag,從 array 開頭與結尾往中間巡覽並比較是否相等,當不同時,則代表該值「非回文」。
演算法的實現已一步到位,因為不需要其他測試案例來驅動出新的或原本不存在於生產代碼的商業邏輯。
Step 3: 新增其他預計應該通過的測試案例
新增測試案例:x 長度為 2,應為非回文的情境,通過!
新增測試案例:x 長度為 3,應為回文的情境,通過!
新增測試案例:x 長度為 3,應為非回文的情境,通過!
通過 LeetCode 所有測試案例
摘要整理
- 測試案例挑選時,我刻意避開了 0,1,2,3 之類的數字當案例,原因是在偵錯時,值跟 index 可能為同一個數字,在 IDE 工具偵錯時,能減少不同資訊的值相同的情況,可以讓腦袋思考與溝通的負擔再小一點。
GitHub commit history: LeetCode 9. Palindrome Number
blog 與課程更新內容,請前往新站位置:http://tdd.best/