回文数

Leetcode(9)之回文数

落花浮王杯 提交于 2020-01-06 21:44:55
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 题目描述: 解题思路: 只要反转后面一半的位数,和前面剩下的一半的数(向上取整)比,如果一样就是回文数。如果这个数是奇数位,比如12321,我们翻转最后3位就是123,前面剩下的两位是12,那么只要确定 123 / 10 == 12 就行了。 注意特殊情况,负数都不可能是回文数,能被10整除且不是0的不可能是回文数 代码: public bool IsPalindrome(int x) { if (x < 0) return false; if (x % 10 == 0 && x != 0) return false; int revertedNum = 0; while (x > revertedNum) { revertedNum = 10 * revertedNum + x % 10; x /= 10; if (x == revertedNum || x / 10 == revertedNum) return true; } return x == revertedNum || x == revertedNum / 10; } 来源: oschina 链接: https://my.oschina.net/u/3860932/blog/3153355

ARTS打卡计划第四周-ALGORITHM

扶醉桌前 提交于 2020-01-06 00:39:15
866. 回文素数 求出大于或等于 N 的最小回文素数。 回顾一下,如果一个数大于 1,且其因数只有 1 和它自身,那么这个数是 素数 。 例如,2,3,5,7,11 以及 13 是素数。 回顾一下,如果一个数从左往右读与从右往左读是一样的,那么这个数是 回文数。 例如,12321 是回文数。 package com711; import java.util.ArrayList; import java.util.Collections; import java.util.List; public class Solution866 { public int primePalindrome(int N) { List<Integer> list = getPalindrome(N); Collections.sort(list); return list.get(0); } public List<Integer> getPalindrome(int N) { List<Integer> list = new ArrayList<Integer>(); // 10以内的特例 for (int i = N; i < 10; i++) { if (isPrime(i)) { list.add(i); return list; } } int start = getMinStart(N)

1408:素数回文数的个数

独自空忆成欢 提交于 2020-01-03 04:06:05
1408:素数回文数的个数 【题目描述】 求11到n之间(包括n),既是素数又是回文数的整数有多少个。 【输入】 一个大于11小于1000的整数n。 【输出】 11到n之间的素数回文数个数。 【输入样例】 23【输出样例】 1【提示】 提示: 回文数指左右对称的数,如:292,333。 代码 # include <iostream> using namespace std ; bool isprime ( int n ) { if ( n == 1 ) return false ; if ( n == 2 ) return true ; for ( int i = 2 ; i * i <= n ; i ++ ) if ( n % i == 0 ) return false ; return true ; } bool ispalindrome ( int n ) { int a [ 5 ] , len = 0 ; while ( n ) { a [ len ++ ] = n % 10 ; n = n / 10 ; } for ( int i = 0 , j = len - 1 ; i <= j ; i ++ , j -- ) if ( a [ i ] != a [ j ] ) return 0 ; return 1 ; } int main ( ) { int n , ans =

4种算法 - 判断回文数

不问归期 提交于 2020-01-02 08:47:59
题目 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 解法一 直接将数值反转 对比两个值是否相等 public class Solution { public bool IsPalindrome ( int x ) { if ( x < 0 ) return false ; int t = x , c = 0 ; while ( t > 0 ) { c = c * 10 + t % 10 ; t / = 10 ; } return c == x ; } } 解法二 基于解法一的改版 不用将全部位置反转,仅反转一半数值 public class Solution { public bool IsPalindrome ( int x ) { if ( x < 0 || ( x > 0 && x % 10 == 0 ) ) return false ; int c = 0 ; while ( x > c ) { c = c * 10 + x % 10 ; x

1106: 回文数(函数专题)

让人想犯罪 __ 提交于 2019-12-29 21:37:20
题目描述 一个正整数,如果从左向 右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数。输入两个整数m和n(m<n),输出区间[m,n]之间的回文数。 输入 输入两个正整数m和n,输入保证m<n。 输出 按从小到大的顺序,输出m到n之间的回文数,每个数后面有一个空格。 样例输入 100 200 样例输出 101 111 121 131 141 151 161 171 181 191 # include <stdio.h> int dvv ( int a ) ; int main ( ) { int m , n ; scanf ( "%d%d" , & m , & n ) ; for ( m ; m <= n ; m ++ ) { if ( dvv ( m ) ) { printf ( "%d " , m ) ; } } return 0 ; } int dvv ( int a ) { int b , d = 0 , c = a , r = 0 ; while ( c > 0 ) { b = c % 10 ; d = d * 10 + b ; c = c / 10 ; } if ( d == a ) { r = 1 ; } return r ; } 来源: CSDN 作者: Dvv啊 链接: https://blog.csdn.net/weixin

leetcode解题之 回文数

浪子不回头ぞ 提交于 2019-12-29 20:33:42
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 转换为字符串来做很简单: public boolean isPalindrome ( int x ) { String s = String . valueOf ( x ) ; int len = s . length ( ) ; for ( int i = 0 ; i < len ; i ++ ) { if ( s . charAt ( i ) != s . charAt ( len - 1 - i ) ) { return false ; } } return true ; } 不使用字符串 public boolean isPalindrome

LeetCode_9 回文数

◇◆丶佛笑我妖孽 提交于 2019-12-28 16:39:20
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/palindrome-number int gaowei(int x){ while(x>=10){ x/=10; } return x; } int high(int count){ int i,sum=1; for(i=1;i<=count;i++){ sum*=10; } return sum; } int len_num(int tmp){ int count=0; while(tmp>=10){ count++; tmp/=10; } count++; return count; } bool isPalindrome(int x){ int i,j,tmp,tmp1,count=0; if(x==0) return true; if(x<0 || x%10==0) return false;

leetcode 第7题 回文数(√)

我与影子孤独终老i 提交于 2019-12-27 02:26:37
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? class Solution { public boolean isPalindrome ( int x ) { if ( x < 0 ) return false ; long res = 0 ; int pop , temp = x ; while ( x != 0 ) { pop = x % 10 ; x /= 10 ; res = res * 10 + pop ; } if ( temp == res ) return true ; else return false ; } } 来源: CSDN 作者: 辜智强 -buaa 链接: https://blog.csdn.net/m0_37719047/article/details/103722527

19.9.14 回文数 简单

[亡魂溺海] 提交于 2019-12-25 15:29:30
题目: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 代码: 1 class Solution { 2 public boolean isPalindrome(int x) { 3 if(x < 0) 4 return false; 5 int result = 0; 6 int num = x; 7 while(x != 0){ 8 int pop = x % 10; 9 x /= 10; 10 result = pop + result * 10; 11 } 12 return result == num; 13 } 14 } 心得: 1、回文数做法跟整数反转一样。 2、没想懂一处地方,我不添加负数判断,当出现负数是, return 的是 true ,但是实际结果应该是 false , elipse 上运行也是 false ,但是leetcode运行结果是 true 。 负数判断是无奈之举。 来源: https://www.cnblogs.com

LeetCode刷题记录_回文数

有些话、适合烂在心里 提交于 2019-12-25 15:29:08
题目: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121 输出: true 示例 2: 输入: -121 输出: false 解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。 示例 3: 输入: 10 输出: false 解释: 从右向左读, 为 01 。因此它不是一个回文数。 进阶: 你能不将整数转为字符串来解决这个问题吗? 解法: 这个简单,不过我不是用字符串做的,因为没看到最后一行字。。。 class Solution { public boolean isPalindrome(int x) { if(x<0) return false; int temp = x; int r=0; while(temp>0){ r=r*10+temp%10; temp/=10; } return r==x?true:false; } } 字符串解法: class Solution { public boolean isPalindrome(int x) { String str= String.valueOf(x); int len = str.length(); int end = len>>1; for(int i=0;i<end;++i){ if(str.charAt(i)