打印一个严格小于给定数字的数字,使其所有数字都是不同的。
原文:https://www . geesforgeks . org/print-a-number-严格来说-小于给定的数字-这样-它的所有数字都是不同的/
给定一个正数 n,打印一个小于 n 的数字,这样它的所有数字都是不同的。 例:
Input : 1134
Output : 1098
1098 is the largest number smaller than
1134 such that all digits are distinct.
Input : 4559
Output : 4539
这个问题很容易通过计数来解决。首先,循环遍历小于 n 的数字,对于每个数字,使用计数数组计算数字出现的频率。如果所有数字只出现一次,我们就打印这个数字。答案总是存在的,所以不存在无限循环的问题。
C++
// CPP program to find a number less than
// n such that all its digits are distinct
#include <bits/stdc++.h>
using namespace std;
// Function to find a number less than
// n such that all its digits are distinct
int findNumber(int n)
{
// looping through numbers less than n
for (int i = n - 1; >=0 ; i--) {
// initializing a hash array
int count[10] = { 0 };
int x = i; // creating a copy of i
// initializing variables to compare lengths of digits
int count1 = 0, count2 = 0;
// counting frequency of the digits
while (x) {
count[x % 10]++;
x /= 10;
count1++;
}
// checking if each digit is present once
for (int j = 0; j < 10; j++) {
if (count[j] == 1)
count2++;
}
if (count1 == count2)
return i;
}
}
// Driver code
int main()
{
int n = 8490;
cout << findNumber(n);
return 0;
}
Java 语言(一种计算机语言,尤用于创建网站)
// Java program to find a number less than
// n such that all its digits are distinct
class GFG{
// Function to find a number less than
// n such that all its digits are distinct
static int findNumber(int n)
{
// looping through numbers less than n
for (int i = n - 1;i >=0 ; i--) {
// initializing a hash array
int[] count=new int[10];
int x = i; // creating a copy of i
// initializing variables to compare lengths of digits
int count1 = 0, count2 = 0;
// counting frequency of the digits
while (x>0) {
count[x % 10]++;
x /= 10;
count1++;
}
// checking if each digit is present once
for (int j = 0; j < 10; j++) {
if (count[j] == 1)
count2++;
}
if (count1 == count2)
return i;
}
return -1;
}
// Driver code
public static void main(String[] args)
{
int n = 8490;
System.out.println(findNumber(n));
}
}
// This code is contributed by mits
Python 3
# python 3 program to find a number less than
# n such that all its digits are distinct
# Function to find a number less than
# n such that all its digits are distinct
def findNumber(n):
# looping through numbers less than n
i = n-1
while(i>=0):
# initializing a hash array
count = [0 for i in range(10)]
x = i
# creating a copy of i
# initializing variables to compare lengths of digits
count1 = 0
count2 = 0
# counting frequency of the digits
while (x):
count[x%10] += 1
x = int(x / 10)
count1 += 1
# checking if each digit is present once
for j in range(0,10,1):
if (count[j] == 1):
count2 += 1
if (count1 == count2):
return i
i -= 1
# Driver code
if __name__ == '__main__':
n = 8490
print(findNumber(n))
# This code is implemented by
# Surendra_Gangwar
C
// C# program to find a number less than
// n such that all its digits are distinct
using System;
class GFG
{
// Function to find a number less than
// n such that all its digits are distinct
static int findNumber(int n)
{
// looping through numbers less than n
for (int i = n - 1; i >= 0; i--)
{
// initializing a hash array
int[] count = new int[10];
int x = i; // creating a copy of i
// initializing variables to compare
// lengths of digits
int count1 = 0, count2 = 0;
// counting frequency of the digits
while (x > 0)
{
count[x % 10]++;
x /= 10;
count1++;
}
// checking if each digit is
// present once
for (int j = 0; j < 10; j++)
{
if (count[j] == 1)
count2++;
}
if (count1 == count2)
return i;
}
return -1;
}
// Driver code
static public void Main ()
{
int n = 8490;
Console.WriteLine(findNumber(n));
}
}
// This code is contributed by akt_mit
服务器端编程语言(Professional Hypertext Preprocessor 的缩写)
<?php
// PHP program to find a number less than
// n such that all its digits are distinct
// Function to find a number less than
// n such that all its digits are distinct
function findNumber($n)
{
// looping through numbers less than n
for ($i = $n - 1;$i >= 0 ; $i--)
{
// initializing a hash array
$count = array_fill(0, 10, 0);
$x = $i; // creating a copy of i
// initializing variables to
// compare lengths of digits
$count1 = 0; $count2 = 0;
// counting frequency of the digits
while ($x)
{
$count[$x % 10]++;
$x = (int)($x / 10);
$count1++;
}
// checking if each digit
// is present once
for ($j = 0; $j < 10; $j++)
{
if ($count[$j] == 1)
$count2++;
}
if ($count1 == $count2)
return $i;
}
}
// Driver code
$n = 8490;
echo findNumber($n);
// This code is contributed
// by Akanksha Rai
?>
java 描述语言
<script>
// Javascript program to find a number less than
// n such that all its digits are distinct
// Function to find a number less than
// n such that all its digits are distinct
function findNumber(n)
{
// looping through numbers less than n
for (i = n - 1;i >=0 ; i--) {
// initializing a hash array
var count=Array.from({length: 10}, (_, i) => 0);
var x = i; // creating a copy of i
// initializing variables to compare lengths of digits
var count1 = 0, count2 = 0;
// counting frequency of the digits
while (x>0) {
count[x % 10]++;
x = parseInt(x/10);
count1++;
}
// checking if each digit is present once
for (j = 0; j < 10; j++) {
if (count[j] == 1)
count2++;
}
if (count1 == count2)
return i;
}
return -1;
}
// Driver code
var n = 8490;
document.write(findNumber(n));
// This code is contributed by 29AjayKumar
</script>
Output:
8479
版权属于:月萌API www.moonapi.com,转载请注明出处