zoukankan      html  css  js  c++  java
  • LeetCode9.回文数

    题目

    给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

    回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。

    示例 1:
    
    输入:x = 121
    输出:true
    示例 2:
    
    输入:x = -121
    输出:false
    解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
    示例 3:
    
    输入:x = 10
    输出:false
    解释:从右向左读, 为 01 。因此它不是一个回文数。
    示例 4:
    
    输入:x = -101
    输出:false
    
    
    提示:
    
    -231 <= x <= 231 - 1
    
    
    进阶:你能不将整数转为字符串来解决这个问题吗?
    

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/palindrome-number
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    解题方法

    字符串 + 双指针

    反转一半数字

    代码

    // 字符串 + 双指针
    func isPalindrome(x int) bool {
    	if x < 0 || (x % 10 == 0 && x != 0) {
    		return false
    	}
    	// 转为字符串
    	s := strconv.Itoa(x)
    	// 左右指针
    	l,r := 0,len(s)-1
    	for l != r && l < r{
    		// 如果出现不相等 false
    		if s[l] != s[r]{
    			return false
    		}
    		l++
    		r--
    	}
    	return true
    }
    
    // 反转一半数字 时间复杂度:O(logn) 空间复杂度O(1)
    func isPalindrome2(x int) bool {
    	// x为负数时不是回文数
    	// x结尾为0时,只有当x自身为0才算回文数
    	if x < 0 || (x%10 == 0 && x != 0){
    		return false
    	}
    	revNumber := 0
    	for x > revNumber{
    		revNumber = revNumber * 10 + x % 10
    		x /= 10
    	}
    	// 数字长度为奇数时 revNumber去除中位数
    	return x == revNumber || x == revNumber / 10
    }
  • 相关阅读:
    python input函数
    linux可用内存判断
    python if-elif-else 判断
    python if判断
    python使用range()函数创建数字列表list
    python range函数
    python语法缩进
    python for循环
    python列表删除和排序
    hbctf 父亲的信
  • 原文地址:https://www.cnblogs.com/hzpeng/p/15057244.html
Copyright © 2011-2022 走看看