How to check if two arrays have the same set of digits in C++

2 Answers

0 votes
#include <bits/stdc++.h>

bool have_same_set_of_digits(int arr1[], int arr2[], int len1, int len2) {
    if (len1 != len2)
        return false;
 
    std::sort(arr1, arr1 + len1);
    std::sort(arr2, arr2 + len2);
 
    for (int i = 0; i < len1; i++)
        if (arr1[i] != arr2[i])
            return false;
 
    return true;
}
 
int main()
{
    int arr1[] = { 1, 5, 8, 3, 9, 2 };
    int arr2[] = { 2, 9, 1, 8, 5, 3 };
    
    int len1 = sizeof(arr1) / sizeof(int);
    int len2 = sizeof(arr2) / sizeof(int);
 
    if (have_same_set_of_digits(arr1, arr2, len1, len2))
        std::cout << "Yes";
    else
        std::cout << "No";
        
    return 0;
}



/*
run:

Yes

*/

 



answered Dec 3, 2020 by avibootz
0 votes
#include <bits/stdc++.h>
 
bool have_same_set_of_digits(int arr1[], int arr2[], int len1, int len2) {
    if (len1 != len2)
        return false;
  
    for (int i = 0; i < len1; i++) {
        bool found = false;
        for (int j = 0; j < len1; j++) {
            if (arr1[i] == arr2[j]) {
                found = true;
                break;
            }
        }
        if (!found)
            return false;
    }

    return true;
}
  
int main()
{
    int arr1[] = { 1, 3, 8, 5, 9, 2 };
    int arr2[] = { 2, 9, 1, 8, 2, 5 };
     
    int len1 = sizeof(arr1) / sizeof(int);
    int len2 = sizeof(arr2) / sizeof(int);
  
    if (have_same_set_of_digits(arr1, arr2, len1, len2))
        std::cout << "Yes";
    else
        std::cout << "No";
         
    return 0;
}
 
 
 
/*
run:
 
No
 
*/

 



answered Dec 4, 2020 by avibootz

Related questions

...