How to get the total numbers with no repeated digits from a range of numbers in C++

1 Answer

0 votes
#include <iostream>
#include <unordered_set>

int repeated_yes_0_no_1(int n) {
    std::unordered_set<int> us;
   
    while (n != 0) {
        int digit = n % 10;
        
        if (us.find(digit) != us.end()) { // repeated = yes
            return 0;
        }
        
        us.insert(digit);
        
        n = n / 10;
    }
    
    return 1;
}
   
int GetTotalNumbersWithNoRepeatedDigits(int start, int end) {
    int total = 0;

    for (int i = start; i <= end + 1; i++) {
        total += repeated_yes_0_no_1(i);
    }
   
    return total ;
}
   
int main()
{
    int start = 1, end = 100;
   
    std::cout << GetTotalNumbersWithNoRepeatedDigits(start, end);
}





/*
run:

90

*/

 



answered Jan 13, 2023 by avibootz
edited Jan 13, 2023 by avibootz
...