9. Palindrome Number_Swift

难度

简单

题目

判断一组数字是否为回数
Example 如下:

12321 return true
12345 return false
-12321 return false

思路

思路一

排除负数,将数字转为字符串,再用字符串的reversed()方法转换,如果两个字符串相等,则为回数。

思路二

取出数字首尾进行比较,如相等则去除首尾继续比较

代码

方法一

func isPalindrome(_ x: Int) -> Bool {
    if x < 0 {
        return false
    }
    
    let intString = String(x)
    let reverseString = String(intString.reversed())
    
    return (intString == reverseString)
}

方法二

func isPalindrome(_ x: Int) -> Bool {
    
    // 0. 排除负数
    if x < 0 {
        return false
    }
    
    // 1. 算出数字最大位数
    var div = 1
    while x / div >= 10 {
        div *= 10
    }
    
    var value = x
    while value != 0 {
        // 2. 取出首尾数字进行比较
        let l = value / div
        let r = value % 10
        
        if l != r {
            return false
        }
        
        // 3. 去除 value 的首尾数字,同时最大位数也减少两位
        value = (value % div) / 10
        div /= 100
    }
    
    return true
}

你可能感兴趣的:(9. Palindrome Number_Swift)