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

生产代码,将 x 转成 char array 后判断长度是否为 1。

LeetCode 9. Palindrome Number

重构测试代码验证的部分:[Extract Method] ShouldBePalindrome()

LeetCode 9. Palindrome Number

Step 2: 新增测试案例,x 长度为 2,且为回文

测试代码:

LeetCode 9. Palindrome Number

生产代码:标记两个 flag,从 array 开头与结尾往中间巡览并比较是否相等,当不同时,则代表该值“非回文”。

LeetCode 9. Palindrome Number

算法的实现已一步到位,因为不需要其他测试案例来驱动出新的或原本不存在于生产代码的商业逻辑。

Step 3: 新增其他预计应该通过的测试案例

新增测试案例:x 长度为 2,应为非回文的情境,通过!

LeetCode 9. Palindrome Number

新增测试案例:x 长度为 3,应为回文的情境,通过!

LeetCode 9. Palindrome Number

新增测试案例:x 长度为 3,应为非回文的情境,通过!

LeetCode 9. Palindrome Number

通过 LeetCode 所有测试案例

LeetCode 9. Palindrome Number

摘要整理

  1. 测试案例挑选时,我刻意避开了 0,1,2,3 之类的数字当案例,原因是在侦错时,值跟 index 可能为同一个数字,在 IDE 工具侦错时,能减少不同资讯的值相同的情况,可以让脑袋思考与沟通的负担再小一点
GitHub commit history: LeetCode 9. Palindrome Number

或许您会对下列培训课程感兴趣:

  1. 2019/7/27(六)~2019/7/28(日):演化式设计:测试驱动开发与持续重构 第六梯次(中国台北)
  2. 2019/8/16(五)~2019/8/18(日):【C#进阶设计-从重构学会高易用性与高弹性API设计】第二梯次(中国台北)
  3. 2019/9/21(六)~2019/9/22(日):Clean Coder:DI 与 AOP 进阶实战 第二梯次(中国台北)
  4. 2019/10/19(六):【针对遗留代码加入单元测试的艺术】第七梯次(中国台北)
  5. 2019/10/20(日):【极速开发】第八梯次(中国台北)
LeetCode 9. Palindrome Number

想收到第一手公开培训课程资讯,或想询问企业内训、顾问、教练、咨询服务的,请洽 Facebook 粉丝专页:91敏捷开发之路。

原文:大专栏  LeetCode 9. Palindrome Number


上一篇:Extend to Palindrome UVA - 11475 (后缀数组)


下一篇:python – Palindrome来自两个3位数字的乘积