美文网首页
判断回文数字

判断回文数字

作者: Breezes | 来源:发表于2021-12-26 20:20 被阅读0次

    不转字符串的方式

       func isPalindrome(_ x: inout Int) -> Bool {
            if x == 0 {
                return true
            }
            if x < 0 || x%10 == 0 { //负数和尾部是0结尾的,必然是非回文
                return false
            }
            var reversed = 0
            while x > reversed {
                reversed = reversed * 10 + x % 10 //从尾部开始拼成新的数字
                x /= 10 //同时使原数字降位
            }
            return x == reversed || x == reversed / 10 //处理x长度为奇偶的情况
        }
        
    

    转字符串后用双指针的形式

       func isPalindrome(_ x: Int) -> Bool {
            
            let s = String(x)
            var left = 0
            var right = s.count-1
            while left != right {
                let start = s.index(s.startIndex, offsetBy: left)
                let end = s.index(s.startIndex, offsetBy: right)
                
                if (s[start] == s[end]) {
                    if (left == right-1) {//处理x长度为偶数的情况
                        return true
                    }
                    left += 1
                    right -= 1
                } else {
                    return false
                }
            }
            return true
        }
    

    相关文章

      网友评论

          本文标题:判断回文数字

          本文链接:https://www.haomeiwen.com/subject/cszsqrtx.html