特殊回文数
问题描述
123321是一个非常特殊的数,它从左边读和从右边读是一样的。
输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n
输入格式
输入一行,包含一个正整数n。
输出格式
按从小到大的顺序输出满足条件的整数,每个整数占一行。
分析:要解决这题,那么就要先知道怎么判断回文数,然后在原来的问题上进行修改。
首先来来看一下如何判断回文数的,代码如下:
import java.util.*;
//判断是不是回文数
public class test06_palindromes {
static boolean palindromes(int x){
// 如果x小于0,不是回文数
if(x<0) return false;
// original用于保存原来的数,bitNum表示多少位
int original=x;
int bitNum=0,m=0;
while (x!=0){
int remainder=x%10;
m=m*10+remainder;
x/=10;
bitNum++;
}
System.out.println(original+"为"+bitNum+"位数");
if(m==original) return true;
else return false;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int x=sc.nextInt();
System.out.println(palindromes(x));
}
}
判断回文字符串:
方法一:
public static boolean longestPalindrome(String s) {
// 字符转为StringBuffer,倒置字符进行比较
StringBuffer sb=new StringBuffer(s);
sb.reverse();
// 或者这里也可以换成比较两个字符是不是相同(类型要相同)
for(int i=0;i<sb.length();i++){
if(s.charAt(i)!=sb.charAt(i)) return false;
}
return true;
}
这里也可以直接比较两个字符是不是相同,前提是要把sb转化位String类型,转化方法点击如下
方法二:
接下来,我们来看一下这题,