回文数

零基础C语言判断回文数

▼魔方 西西 提交于 2019-12-14 02:55:14
C语言判断回文数 /* 判断一个数是否为回文数。 设n是一任意自然数。若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数。 例如,若n=1234321,则称n为一回文数;但若n=1234567,则n不是回文数 */ # include <stdio.h> int main ( ) { int n , reversedInteger = 0 , remainder , originalInteger ; printf ( "输入一个整数: " ) ; scanf ( "%d" , & n ) ; originalInteger = n ; // 翻转 while ( n != 0 ) { remainder = n % 10 ; reversedInteger = reversedInteger * 10 + remainder ; n / = 10 ; } // 判断 if ( originalInteger == reversedInteger ) printf ( "%d 是回文数。" , originalInteger ) ; else printf ( "%d 不是回文数。" , originalInteger ) ; return 0 ; } 来源: CSDN 作者: @艾叶 链接: https://blog.csdn.net/m0_45023913

leetcode 1.回文数-(easy)

天涯浪子 提交于 2019-12-12 01:08:43
2019.7.11leetcode刷题 难度 easy 题目名称 回文数 题目摘要 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 思路 一些一定不为回文数的数: 1.负数 2.大于0,但末位为0的数(x> 0 && x % 10 == 0) 如果是上面这些情况则直接返回false。 将整数的每一位存入数组中,arr[i]代表整数的倒数i+1位。 然后判断arr[i]是否和arr[num -1 -i]位是否相等,如果相等则判断下一位;否则返回false 当i> num-i-1时如果还没返回则代表所有字符的是相对称的,也就是回文数,返回true 下面是python的代码: 12345678910111213141516 class (object): def isPalindrome(self, x): """ :type x: int :rtype: bool """ a=abs(x) sum=0 while(a!=0): p=x%10 sum=sum*10+p a=a//10 if x>=0 and x==sum: return True else: return False 下面是高级版python代码:希望以后再回来看将它弄懂 1234 class : def isPalindrome(self, x: int) -> bool: r

LeetCode--回文数(简单)

独自空忆成欢 提交于 2019-12-10 21:18:54
题目描述: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 方法一:反转一半数字 思路 第一个想法是将数字转换为字符串,并检查字符串是否为回文。但是,这需要额外的非常量空间来创建问题描述中所不允许的字符串。 第二个想法是将数字本身反转,然后将反转后的数字与原始数字进行比较,如果它们是相同的,那么这个数字就是回文。但是,如果反转后的数字大于 int.MAX ,我们将遇到整数溢出问题。   按照第二个想法,为了避免数字反转可能导致的溢出问题,为什么不考虑只反转int数字的一半?毕竟,如果该数字是回文,其后半部分反转后应该与原始数字的前半部分相同。   例如,输入 1221 ,我们可以将数字“12 21 ”的后半部分从“ 21 ”反转为“ 12 ”,并将其与前半部分“12”进行比较,因为二者相同,我们得知数字 1221 是回文。 首先,我们应该处理一些临界情况。所有负数都不可能是回文,例如:-123不是回文

回文数(简单)

戏子无情 提交于 2019-12-10 03:34:16
来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 个人解法,并不是最优解 class Solution { public boolean isPalindrome ( int x ) { String a = String . valueOf ( x ) ; StringBuilder sb = new StringBuilder ( a ) . reverse ( ) ; String c = new String ( sb ) ; if ( a . equals ( c ) ) { return true ; } else { return false ; } } } 来源: CSDN 作者: Inki_Lee 链接: https://blog.csdn.net/weixin_44854514/article

回文数 js 解法

醉酒当歌 提交于 2019-12-06 12:28:48
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 解法一:普通解法 最好理解的一种解法就是先将整数转为字符串 ,然后将字符串分割为数组,只需要循环数组的一半长度进行判断对应元素是否相等即可。 动画描述 解题代码: /** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { if (x<0) { return false; } else { let arr = (x+'').split(''); arr.reverse(); let rev = Number(arr.join('')); if (rev === x) { return true; } else { return false; } } }; 解法二:进阶解法---数学解法 通过取整和取余操作获取整数中对应的数字进行比较。 举个例子:1221 这个数字。 通过计算 1221 / 1000,

PHP算法之回文数

强颜欢笑 提交于 2019-12-06 06:20:21
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 来源:力扣(LeetCode) 1.这个转为字符串处理 class Solution { /** * @param Integer $x * @return Boolean */ function isPalindrome($x) { $len = strlen($x); $str = strrev($x); if($len > 0 && $str == $x){ return true; } return false; } } 来源: https://www.cnblogs.com/corvus/p/11965175.html

蓝桥杯:练习题:回文数

*爱你&永不变心* 提交于 2019-12-05 16:50:25
package lanqiaobei; import java.util.Scanner; /* 练习题:回文数 一个正整数,如果交换高低位以后和原数相等,那么称这个数为回文数。比如 121,2332 都是回文数,13,456713,4567 不是回文数。 任意一个正整数,如果其不是回文数,将该数交换高低位以后和原数相加得到一个新的数,如果新数不是回文数,重复这个变换,直到得到一个回文数为止。例如,57 变换后得到 132(57+75),132 得到 363(132+231),363是一个回文数。 曾经有数学家猜想:对于任意正整数,经过有限次上述变换以后,一定能得出一个回文数。至今这个猜想还没有被证明是对的。现在请你通过程序来验证。 输入格式 输入一行一个正整数n。 输出格式 输出第一行一个正整数,表示得到一个回文数的最少变换次数。 接下来一行,输出变换过程,相邻的数之间用"--->"连接。输出格式可以参见样例。 保证最后生成的数在 int 范围内。 样例输入 349 样例输出 3 349--->1292--->4213--->7337 */ public class HuiWenNumber { static int cont=0; static StringBuffer re=new StringBuffer(""); public static void main

算法训练_ALGO14_回文数

*爱你&永不变心* 提交于 2019-12-05 16:50:11
问题描述   若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个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>

蓝桥杯 基础练习 特殊回文数 高效算法

六月ゝ 毕业季﹏ 提交于 2019-12-05 16:49:58
基础练习 特殊回文数 时间限制:1.0s 内存限制:512.0MB 问题描述   123321是一个非常特殊的数,它从左边读和从右边读是一样的。   输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。 输入格式   输入一行,包含一个正整数n。 输出格式   按从小到大的顺序输出满足条件的整数,每个整数占一行。 样例输入 52 样例输出 899998 989989 998899 数据规模和约定   1<=n<=54。 做过欧拉计划的同学应该知道欧拉计划里面有一题是用来计算回文数的,话不多说,直接贴代码: #include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; long long sum; int i, j, k; for(i = 1;i<=9;i++) for(j = 0;j<=9;j++) for (k = 0; k <= 9; k++) { if (2 * (i + j) + k == n) { sum = i * 10001 + j * 1010 + k * 100; cout << sum << endl; } } for (i = 1; i <= 9; i++) for (j = 0; j <= 9; j++) for

算法训练 回文数

萝らか妹 提交于 2019-12-05 16:49:32
算法训练 回文数 时间限制:1.0s 内存限制:256.0MB 问题描述   若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。   例如:给定一个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 算法思路: (1) 因为有 16 进制的数存在,所以输入的数 m 以字符串的格式输入 (2) 将字符串 m 转换成整数,存入数组 a 中,其倒序数存入数组 b 中 将 a 与 b 的和存入数组 s 中,通过函数