I have created below logic to find if the combination of 2 strings has all the digits from 0-9 at least once. But I think this is very naive and need improvements in performance. Can you please suggest better solution and anything wrong with my solution. Thanks.
Input: Array of strings with digits(Ex: 012345,6789,34567). And I am trying to find how many pairs of strings will have all the digits 0-9 at least once.(In Ex: 1 pair -1st and 2nd).
static long getNumberOfValidPairs(String[] tickets) {
        long count=0;
        for(int i=0;i<tickets.length-1;i++){
           for(int j=i+1;j<tickets.length;j++){
               String concat = tickets[i]+tickets[j];
               if(concat.length() <10){
                   continue;
               }
               if(concat.contains("0") && concat.contains("1") && concat.contains("2") && concat.contains("3") && concat.contains("4") && concat.contains("5") && concat.contains("6") && concat.contains("7") && concat.contains("8") && concat.contains("9")){
                   count++;
               }
           }
       }
        return count;
    }
Improved solution:
static long getNumberOfValidPairs(String[] tickets) {
        long count=0;
        short[] masks = new short[tickets.length];
        char[] chs = null;
        short mask = 0;
        short mask_full = (short) 0b1111111111;
        for(int i=0;i<tickets.length;i++){
            chs = tickets[i].toCharArray();
            mask = 0;
            for(char ch:chs){
                if (ch >= '0' && ch <= '9') {
                int digit = ch - '0';
                mask |= (1 << digit);
            }
            }
            masks[i] = mask;
        }
        for(int i=0;i<tickets.length-1;i++){
            short mask_i = masks[i];
           for(int j=i+1;j<tickets.length;j++){
               short mask_j = masks[j];
               short mask_i_j_concatenated = (short) (mask_i | mask_j);
            if (mask_i_j_concatenated == mask_full) {
               // System.out.println("Strings [" + string_i + "] and [" + string_j + "] form a pair.");
                count++;
            }
           }
       }
        return count;
    }
 
     
     
     
     
    