回文数

回文数

一世执手 提交于 2019-11-27 19:25:17
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? #include<iostream> using namespace std; class Solution { public: bool isPalindrome(int x) { if (x<0) return false; int m = 0, n = 0; int t = x; while (t != 0){ m = t % 10; n = n * 10 + m; t = t / 10; } return n == x; } }; int main() { int m; cin >> m; cout << Solution().isPalindrome(m) << endl; system("pause"); return 0; }    来源: https://www.cnblogs.com/277223178dudu/p/11374119

判断一个数是否是回文数

被刻印的时光 ゝ 提交于 2019-11-27 16:22:06
题目:   定义回文数的概念如下:   1. 如果一个非负数左右完全对应,则该数是回文数,例如:121,22等   2. 如果一个负数的绝对值左右完全对应,也是回文数,例如:-121,-22等   给定一个32位整数num,判断num是否是回文数。 基本思路   具体过程如下:   1、假设判断的数字为非负整数n,先生成变量help,开始时help = 1   2、用help不断地乘以10,直到变得与num的位数一样   3、那么num/help的结果就是最高位的数字,num%10就是最低位的位置,比较这两个数字,不相同则直接返回False。相同则令num = (num % help) / 10,即num变成除去最高位和最低位两个数字之后的值。令help /= 100,即让help变得继续和新的num的位数一样   4、如果num == 0,表示所有的数字已经对应判断完毕,返回True,否则重复步骤3   上述方法就是让num每次剥掉最左和最右的两个数。需要注意的是,上述方法只适用于非负数,如果n为负数,先把n变成其绝对值,然后用上面的方法进行判断。特别注意,如果n是32位最小值的话,它是转不成相应的绝对值的,并且这个数很明显不是回文数,直接返回False即可 def isPalindrome(n): if n == -(1<<31): return False n = abs(n

leetcode 回文数

强颜欢笑 提交于 2019-11-27 15:43:16
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 不将整数转为字符串来解决这个问题 链接:https://leetcode-cn.com/problems/palindrome-number 转换成字符串就比较容易: class Solution: def isPalindrome(self, x: int) -> bool: return (True if str(x) == str(x)[::-1] else False) 不转成字符串的话,首先想到的是将数字反转,然后将反转后的数字与原始数字进行比较: class Solution: def isPalindrome(self, x: int) -> bool: if x<0: return False y = x res = 0 while y: last = y%10 res = res*10+last y//=10 if res==x: return True else: return

1079 延迟的回文数 (20 分)

元气小坏坏 提交于 2019-11-27 12:42:24
1079 延迟的回文数 (20 分) 给定一个 k+1 位的正整数 N,写成 a​k​​⋯a​1​​a​0​​ 的形式,其中对所有 i 有 0≤a​i​​<10 且 a​k​​>0。N 被称为一个 回文数 ,当且仅当对所有 i 有 a​i​​=a​k−i​​。零也被定义为一个回文数。 非回文数也可以通过一系列操作变出回文数。首先将该数字逆转,再将逆转数与该数相加,如果和还不是一个回文数,就重复这个逆转再相加的操作,直到一个回文数出现。如果一个非回文数可以变出回文数,就称这个数为 延迟的回文数 。(定义翻译自 https://en.wikipedia.org/wiki/Palindromic_number ) 给定任意一个正整数,本题要求你找到其变出的那个回文数。 输入格式: 输入在一行中给出一个不超过1000位的正整数。 输出格式: 对给定的整数,一行一行输出其变出回文数的过程。每行格式如下 A + B = C 其中 A 是原始的数字, B 是 A 的逆转数, C 是它们的和。 A 从输入的整数开始。重复操作直到 C 在 10 步以内变成回文数,这时在一行中输出 C is a palindromic number. ;或者如果 10 步都没能得到回文数,最后就在一行中输出 Not found in 10 iterations. 。 输入样例 1: 97152 输出样例 1:

LeetCode: 9. 回文数

ε祈祈猫儿з 提交于 2019-11-27 12:08:57
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 public boolean isPalindrome(int x) { if (x < 0){ return false; } int temp = x; int result = 0; while(x != 0) { int pop = x % 10; result = result * 10 + pop; x /= 10; } return temp == result; } 来源: https://www.cnblogs.com/aoeiuvAQU/p/11362062.html

判断回文数

孤街浪徒 提交于 2019-11-27 09:59:04
ACM 766 判断回文数: 第一种方法:将数倒置,与原数比较 void f(int x) { int y=0; while(x>0) { y=(x%10)+y*10; x/=10; } if(x==y) cout>>"回文数">>endl; else cout>>"不是回文数">>endl; } 第二种方法:用数组代替,进而进行比较 void f(int x[]) { int len=strlen(x); int n=len/2; for(int i=0;i<n;i++) { if(x[i]!=x[len-i-1]) cout>>"不是回文数">>endl; } if(i>=n) cout>>"是回文数">>endl; } 第三种方法:指针比较,与第二种类似 第四种方法:接收数字,通过函数转换成数组 itoa()函数: # include <stdio.h> # include <stdlib.h> void main (void) { int num = 100; char str[25]; itoa(num, str, 10); printf("The number 'num' is %d and the string 'str' is %s. \n" , num, str); } itoa()函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串

回文数判断

旧巷老猫 提交于 2019-11-27 09:58:50
题目:输入五位数的的正整数,判断其是不是回文数。12321既是回文数个位数字等于十万位数字并且百位数字等于万位数字。 分析:将五位数转换为String类型,然后转为char类型数组,取出每个数字 package com.math.forth; import java.util.Scanner; /*** * 输入五位数的的正整数,判断其是不是回文数。12321既是回文数个位数字等于十万位数字并且百位数字等于万位数字。 * 分析:将五位数转换为String类型,然后转为char类型数组,取出每个数字 * @author wql * */ public class Math14 { public static void main(String[] args) { Scanner sc=new Scanner(System.in); System.out.println("请输入五位数的正整数:"); int num=sc.nextInt(); if(10000<=num&&num<=99999){//判断是不是5位数 method(num); }else{ System.out.println("输入有误!"); } } public static void method(int num){ String s=String.valueOf(num); char[] c=s

【leetcode算法-简单】9. 回文数

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-26 11:59:15
【题目描述】 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 【 解答 】 解法一:将整数转化为字符串,判断字符串反转后是否与之前的相等    def isPalindrome(x)l: return str(x) == str(x)[::-1]   执行用时:60ms 解法二:计算出此整数的倒序整数n def isPalindrome(x): if x<0: return False num = x n = 0 while num: n = n*10 + num%10 num = num // 10 if n == x: return True else: return False   执行用时:101ms 判断一个整数是否是回文数。回文数是指正序(从左向右

蓝桥杯 算法训练 回文数

天大地大妈咪最大 提交于 2019-11-26 04:21:57
问题描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个10进制数56,将56加65(即把56从右向左读),得到121是一个回文数。   又如:对于10进制数87:   STEP1:87+78 = 165 STEP2:165+561 = 726   STEP3:726+627 = 1353 STEP4:1353+3531 = 4884   在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。   写一个程序,给定一个N(2<=N<=10或N=16)进制数M(其中16进制数字为0-9与A-F),求最少经过几步可以得到回文数。   如果在30步以内(包含30步)不可能得到回文数,则输出“Impossible!” 输入格式   两行,N与M 输出格式   如果能在30步以内得到回文数,输出“STEP=xx”(不含引号),其中xx是步数;否则输出一行”Impossible!”(不含引号) 样例输入 9 87 样例输出 STEP=6 解题思路 回文数判断、进制转换、递归计算第几步 # include <iostream> # include <string> # include <vector> using namespace std ; bool Huiwen ( string s ) { int i = 0 , j