Swift刷LeetCode 之 9- Palindrome Number-Easy

17 篇文章 0 订阅
14 篇文章 0 订阅

Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.

确定一个整数是否是回文。一个整数是一个回文,当它读取相同的向后和向前。

Example 1:

Input: 121
Output: true

Example 2:

Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.

Example 3:

Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.

Idea 1:

From example 2, we could get an information that the negative number cannot be a palindrome. So my first idea is to convert the given integer to string and use a left index and a right index to see if the first letter == last letten. If not, return false, otherwise plus 1 to left and minus 1 to right untill left > right.

从例2中,我们可以得到一个信息,即负数不能是回文。所以我的第一个想法是把给定的整数转换成字符串,使用左索引和右索引来看看第一个字母==最后一个letten。否则,向左加1,向右减1,直到左>右。

        func isPalindrome(_ x: Int) -> Bool {
            if x < 0 {return false}
            let container = "\(x)"
            var left = 0
            var right = container.count - 1
            while left < right{
                if container[container.index(container.startIndex, offsetBy: left)] != container[container.index(container.startIndex, offsetBy: right)]{
                    return false
                }
                left += 1
                right -= 1
            }
            return true
        }

Idea 2: Solved this without converting the integer to string.

To see if the 123 is a palindrome, we just neet to compare it to 321 which is the reversion of 123. The algorithm is same as Leetcode-7-Reverse Interger.

为了看123是不是回文,我们只需要把它和321比较,321是123的回文。算法与Leetcode-7-Reverse Interger相同。

        func isPalindrome(_ x: Int) -> Bool {
            if x < 0 {return false}
            var temp = x
            var reversedInt = 0
            
            while temp / 10 != 0 {
           
                reversedInt += temp % 10
                reversedInt *= 10
                
                temp /= 10
            }
           
            return reversedInt+temp%10 == x ? true : false
        }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值