Java 中的逆序和加法函数
给定一个整数,我们的目标是反转该数字的数字,并将反转后的数字加到原始数字上,并检查结果数字是否为回文数,并重复此过程直到完成。该过程的断点是 1000 次迭代和大于最大长整数值 (Long.MAX_VALUE) 的值。
例如
输入 - 1678
输出 - 给定输入 1678 的回文数 293392
解释 - 首先反转输入数字,然后将其添加到原始数字中,然后检查它是否为回文数,如果它不是回文数,则对更新后的数字重复相同的过程。该过程的断点是 1000 次迭代和大于最大长整数值 (Long.MAX_VALUE) 的值。
输入 - 202021038
输出 - 给定输入 202021038 的回文数 1453553541
解释 - 首先反转输入数字,然后将其添加到原始数字中,然后检查它是否为回文数,如果它不是回文数,则对更新后的数字重复相同的过程。该过程的断点是 1000 次迭代和大于最大长整数值 (Long.MAX_VALUE) 的值。
下面程序中使用的方案如下
在 main 函数内部
输入数字传递给方法 calculateReverseandAdd(input)
在方法 calculateReverseandAdd 内部
引入一个新的变量 rev_number
循环迭代的条件是 number <= max
在循环内部,通过将数字传递给方法 reverseNumber() 获取数字的反转。
然后将反转后的数字加到输入数字上。
然后通过将数字传递给方法 checkPalindrome() 检查获得的数字是否为回文数,如果是,则将数字作为输出打印给用户。
如果数字不是回文数,则使用获得的数字重复相同的过程,直到获得回文数,如果结果数字大于最大长整数值,则给定数字范围内不存在可能的回文数。
示例
import java.util.*;
public class ReverseAdd{
static final long max = Long.MAX_VALUE;
static long reverseNumber(long number){
long rev_number = 0;
while (number > 0){
rev_number = rev_number * 10 + number % 10;
number = number / 10;
}
return rev_number;
}
static boolean checkPalindrome(long number){
return (reverseNumber(number) == number);
}
static void calculateReverseandAdd(long number){
long rev_number = 0;
System.out.println("Palindrome of the given input " + number);
while (number <= max){
rev_number = reverseNumber(number);
number = number + rev_number;
if (checkPalindrome(number)){
System.out.println(number);
break;
}
else if (number > max){
System.out.println("No possible palindromes for the input");
}
}
}
public static void main(String[] args){
calculateReverseandAdd(1678);
calculateReverseandAdd(2961);
calculateReverseandAdd(202021038);
}
}输出
如果我们运行以上代码,它将生成以下输出
Palindrome of the given input 1678 293392 Palindrome of the given input 2961 69696 Palindrome of the given input 202021038 1453553541
广告
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP