Java 中判断一个数是否为自描述数
如果一个数字的第一个数字代表该数字中 0 的个数,第二个数字代表 1 的个数,第三个数字代表 2 的个数,以此类推,则称该数字为自描述数。
简单来说,如果给定数字的从左到右的数字分别代表该数字中 0、1、2、3、4……N 的出现频率,则该数字被称为自描述数。
自描述数的一些例子是:1210, 2020, 21200, 3211000, 42101000……等等。
以下是一些示例:
示例 1
Input number is 1210. Let’s check it by using the logic of Autobiographical numbers. Number of zeros available in the given number is = 1. And the first digit is also 1. Number of one’s available in the given number is= 2. And the second digit is also 2. Number of two available in the given number is= 1. And the third digit is also 1. Number of three’s available in the given number is= 0. And the fourth digit is also 0. As we notice here by arranging all those digits, we will get the same original number. Hence, 1210 is an Autobiographical number.
示例 2
Input number is 12312. Let’s check it by using the logic of Autobiographical numbers. Number of zeros available in the given number is = 0, but the first digit is 1. Hence, 12312 is not an Autobiographical number.
算法
步骤 1 - 通过静态输入方法获取输入数字。
步骤 2 - 将输入数字转换为字符串。
步骤 3 - 声明一个数组,然后将该字符串的数字存储到数组中。
步骤 4 - 然后启动循环并检查 0、1、2、3、4……n 的出现次数。
步骤 5 - 如果将数字的出现次数组合起来,得到的结果与原始数字相同,则打印给定数字是一个自描述数,否则不是。
语法
要在 Java 中获得任何数字的另一个数字次方的绝对值,我们有内置的 java.lang.Math.abs() 方法。
以下是使用该方法获得 2 的幂的语法:
int value = Math.abs (inputValue)
多种方法
我们提供了多种方法的解决方案。
使用用户自定义方法和静态输入值。
使用用户输入值。
让我们逐一查看程序及其输出。
方法 1:使用用户自定义方法和静态输入值
在这种方法中,我们声明一个变量并初始化一个数字作为值,并将此数字作为参数传递给用户自定义方法,然后在方法内部使用算法来检查该数字是否为自描述数。
示例
import java.util.*; public class Main { public static void main(String args[]) { int inp= 3211000; if(checkAutobiographical(inp)) System.out.println(inp + " is an autobiographical number."); else System.out.println(inp + " is not an autobiographical number."); } public static boolean checkAutobiographical(int n){ int inputNumber = Math.abs(n); int temp = inputNumber; String s = String.valueOf(inputNumber); int arr[] = new int[s.length()]; for(int i = arr.length - 1; i >= 0; i--) { arr[i] = temp % 10; temp = temp/10; } boolean f = true; for(int i = 0; i < arr.length; i++) { int count = 0; for(int j = 0; j < arr.length; j++) { if(i == arr[j]) count++; } if(count != arr[i]) { f = false; break; } } if(f) return true; else return false; } }
输出
3211000 is an autobiographical number.
方法 2: 使用用户输入值
在这种方法中,我们通过用户输入声明一个输入数字,并使用算法来检查该数字是否为自描述数。
示例
import java.util.*; public class Main { public static void main(String args[]) { Scanner sc=new Scanner(System.in); System.out.print("Enter the number: "); int inputNumber = sc.nextInt(); inputNumber = Math.abs(inputNumber); int temp = inputNumber; String s = String.valueOf(inputNumber); int arr[] = new int[s.length()]; for(int i = arr.length - 1; i >= 0; i--) { arr[i] = temp % 10; temp = temp/10; } boolean f = true; for(int i = 0; i < arr.length; i++) { int count = 0; for(int j = 0; j < arr.length; j++) { if(i == arr[j]) count++; } if(count != arr[i]) { f = false; break; } } if(f) System.out.println(inputNumber + " is an autobiographical number."); else System.out.println(inputNumber + " is not an autobiographical number."); } }
输出
Enter the number: 2020 2020 is an autobiographical number.
在本文中,我们探讨了如何使用不同的方法在 Java 中检查一个数字是否为自描述数。
广告