Leetcode Brush Questions-Intimate Strings

Análisis: si el número de caracteres en las dos cadenas no es igual, se devuelve falso; las otras situaciones a continuación se basan en el mismo número de caracteres en las dos cadenas:

Si el mismo número de caracteres en la misma posición en dos cadenas es menor o igual que el número total de caracteres menos 3, entonces debe devolver falso;

Si el mismo número de caracteres en la misma posición en dos cadenas es igual al número total de caracteres menos 1, debe devolver falso;

Si el mismo número de caracteres en la misma posición en dos cadenas es igual al número total de caracteres, entonces se discute el caso: si hay caracteres duplicados, devuelva verdadero; de lo contrario, falso;

Si el mismo número de caracteres en la misma posición en dos cadenas es igual al número total de caracteres menos 2, entonces el caso de devolver verdadero es verificar si una de las cadenas se puede emparejar con la otra después de las dos posiciones de intercambio restantes !

class Solution {
    public boolean buddyStrings(String A, String B) {
        char [] a = A.toCharArray();
        char [] b = B.toCharArray();
        if(a.length != b.length){
            return false;
        }
        int length = a.length;
        int [] m = new int[length];
        int [] n = new int[length];
        for(int i = 0;i < length;i++){
            m[i] = a[i] -'a' + 1;
        }
        for(int j = 0;j < length;j++){
            n[j] = b[j] - 'a' + 1;
        }
        int count = 0;
        ArrayList<Integer> mList = new ArrayList();
        ArrayList<Integer> nList = new ArrayList();
        for(int k = 0;k < length;k++){
            if(m[k] == n[k]){
                count++;
            }else{
                mList.add(m[k]);
                nList.add(n[k]);
            }
        }
        if(count <= length -3 || count == length - 1){
            return false;
        }
        if(count == length){
            HashSet set = new HashSet();
            for(int p = 0;p < length;p++){
                if(set.contains(m[p])){
                    return true;
                }
                set.add(m[p]);
            }
            return false;
        }
        if(count == length -2){
            if(mList.get(1) == nList.get(0) && mList.get(0) == nList.get(1)){
                return true;
            }else{
                return false;
            }
        }

        return false;

    }
}

La complejidad del tiempo es O (n):

 

 

 

Supongo que te gusta

Origin blog.csdn.net/qq_36428821/article/details/112911623
Recomendado
Clasificación