回文数

Leetcode9_回文数

微笑、不失礼 提交于 2019-11-30 04:34:19
哈哈哈哈哈哈哈太开心了,今天的代码耗时和内存消耗比官方少了一半哈哈 (因为官方用C#写的,我用C++,手动狗头) 题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 代码 1 class Solution { 2 public: 3 bool isPalindrome(int x) { 4 int a = 0; 5 if (x == 0) 6 return true; 7 else if (x < 0 || x % 10 == 0) 8 return false; 9 while(x > a){ 10 a = a * 10 + x % 10; 11 x/=10; 12 } 13 return x == a || x == a / 10; 14 } 15 }; View Code 来源: https://www.cnblogs.com/vocoub/p/11560369.html

字符串学与练

删除回忆录丶 提交于 2019-11-30 04:18:33
一、常见字符串 二、字符串小练习 (1)设n是一个任意自然数,如果n的各位数字反向排序所得的自然数与n相等,则n被称为回文数,从键盘输入一个5位数字 ,请编写程序判断这个数字是不是回文数。 运行结果: 来源: https://www.cnblogs.com/wt714/p/11558851.html

回文数

核能气质少年 提交于 2019-11-29 22:27:08
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? class Solution { public: bool isPalindrome(int x) { if(x<0||(x%10==0&&x!=0))//1.小于0肯定不是(包括一位数);2.个位上为0肯定不是 return false; int tmp=0; while(x>tmp) { tmp=tmp*10+x%10; x/=10; } return x==tmp||x==tmp/10; } }; 来源: https://www.cnblogs.com/tianzeng/p/11537920.html

LeetCode9 回文数 解法与分析

瘦欲@ 提交于 2019-11-29 21:51:05
问题描述: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 解法一: 将给出的数字进行判断,如果是负数立刻返回false,然后转成字符串进行判断。 代码如下: class Solution { public : bool isPalindrome ( int x ) { if ( x < 0 ) return false ; string s = to_string ( x ) ; int n = s . length ( ) - 1 ; for ( int i = 0 ; i < s . length ( ) ; i ++ ) { if ( i == n ) { return true ; } if ( s [ i ] != s [ n ] ) { return

【9】回文数

你。 提交于 2019-11-28 22:25:48
题目: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 解法思想: 不采用传统思想,即把 int数转换为字符串,再通过折半对比或倒序判断是否是回文数。通过除法和取余,将数字直接倒序,再与原数进行对比,返回结果。 代码实现: public class Solution4 { public boolean isPalindrome(int x){ if(x < 0){ return false; } int num = x; int next = 0; while(num!=0){ next = next*10 + num%10; num = num/10; } return next==x; } public static void main(String[] args){ Solution4 s4 = new Solution4(); System.out.println(s4.isPalindrome((int)(Math.random()*1000))); //Math.random()生成一个[0,1)的浮点数 } } 来源: https://blog.csdn.net/qq_38379983/article/details/100140962

leetcode 9 回文数

≯℡__Kan透↙ 提交于 2019-11-28 17:00:19
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 用之前回文字串的思路可以轻松解决。(倒置一下相等就可以了) 用数字的话考虑几种情况: 1.负数,必为false; 2.零,必为true; 3.正数,可以先统计一遍个数,然后通过统计的值来取最高位和最低位这样一位位比。 *要注意的越界问题。如果乘10乘10的向上乘,在只有1位数的时候乘个10就会产生越界。 public: bool isPalindrome(int x) { if(x<0) return false;//负号必不回文 if(x<10) return true;//个位数必定回文 int cur=1;//用于除最高位 int y=x;

Leetcode 9 回文数

亡梦爱人 提交于 2019-11-28 17:00:07
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 回文数算是算法题里最简单的那种的题目了,如果是c++的话,就是常规的做法,但现在我是个pythoner,所以可以使用列表的一些骚操作来解决这个问题,数字转化为字符串的话,就可以用列表操作了,使用列表的lists[0] == lists[-1]这样的反转属性。 # 176 ms, 在Palindrome Number的Python提交中击败了62.52% 的用户 # 内存消耗 : 10.7 MB, 在Palindrome Number的Python提交中击败了0.25% 的用户 class Solution(object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ if x < 0: return False else: flag = 1 x = str(x) for i in

Leetcode(9)回文数

安稳与你 提交于 2019-11-28 16:58:17
Leetcode(9)回文数 [题目表述]: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 第一次:直接全部转 执行用时:148 ms; 内存消耗:13.4MB 效果:还行 class Solution: def isPalindrome(self, x: int) -> bool: s=str(x) if s==s[::-1]: return True else: return False 第二种方法:反转一半数字 执行用时:156 ms; 内存消耗:13.2MB 效果:还行 原因:1.额外空间 2.反转整数溢出 算法:1.负数全不是 2.反转后一半:利用%10/10 3.判断到一半:反转数字>未反转数字 class Solution: def isPalindrome(self, x): rev = 0 if not x: return True if x<0 or not x % 10: return False else: while x > rev: rev = rev * 10 + x % 10 x //= 10 return x == rev or x == rev // 10 ##第二个条件是由于可能是奇回文数 来源: http://www.cnblogs.com/ymjun/p/11681752.html

[LeetCode]9 回文数

霸气de小男生 提交于 2019-11-28 16:57:58
题目描述 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。    思路: 一种是利用StringBuffer的反转函数来处理,有点慢 二种是将直接算出他的回文数 第一种代码: class Solution { public boolean isPalindrome(int x) { StringBuffer s = new StringBuffer(); s.append(x); //System.out.println(s.reverse()+"--"+String.valueOf(x)); try { if(s.reverse().toString().equals(String.valueOf(x))){ return true; } }catch (Exception e){ //e.printStackTrace(); return false; } return false; } }    速度:花了230ms 第二种代码:即求出回文数

LeetCode(9):回文数

半城伤御伤魂 提交于 2019-11-28 16:57:46
Easy! 题目描述: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 判断一个整数是否是回文数。不能使用辅助空间。 一些提示: 负整数可以是回文数吗?(例如 -1) 如果你打算把整数转为字符串,请注意不允许使用辅助空间的限制。 你也可以考虑将数字颠倒。但是如果你已经解决了 “颠倒整数” 问题的话,就会注意到颠倒整数时可能会发生溢出。你怎么来解决这个问题呢? 本题有一种比较通用的解决方式。 解题思路: 意味着这道验证回文数字的题如果将数字转为字符串,就变成了验证回文字符串的题,没啥难度了,我们就直接来做follow up吧,这道验证回文数字的题不能使用额外空间,不能转为字符串,然后来验证回文字符串。而是直接对整数进行操作,我们可以利用取整和取余来获得我们想要的数字,比如 1221 这个数字,如果 计算 1221 / 1000, 则可得首位1, 如果 1221 % 10, 则可得到末尾1,进行比较