Java aplicación LeetCode 686 repita la coincidencia de cadenas superpuesta

686. superposición repetidamente una correspondencia de cadenas

Dado dos cadenas A y B, para encontrar el número mínimo de repeticiones de la cadena A se superponen, por lo que la cadena se convierten en subcadenas A B después de la adición, si no hay o es -1.

Por ejemplo, A = "abcd", B = "cdabcdab".

Respuesta es 3, debido a la "abcdabcdabcd", caso B es la superposición de las cadenas de sub Una repite tres veces, la cadena A se repite dos veces superpuesta "ABCDABCD", B no es de sus hijos.

nota:

A y B de longitud de cadena en el intervalo de 1 y 10.000 intervalo.

class Solution {
   public int repeatedStringMatch(String A, String B) {
        
        
        //滚轮? A作为滚轮
        char[] a = A.toCharArray();
        char[] b = B.toCharArray();
        for(int i=0;i<a.length;i++){
            int len = loop(a,b,i);
            if(len > 0){// 
                int count = 1;
                
                len = B.length() - a.length + i;
                count += len/a.length;
                count += len%a.length > 0 ? 1 : 0;
                return count;
            }else if(len + a.length <= 0){
                return -1;
            }
        }
        return -1;
        
    }
    //使用a滚轮印刷b,start为起始点
    public int loop(char[] a,char[] b,int start){
        int count = start;
        for(char c : b){
            if(a[start % a.length] != c){
                return count - start;
            }
            start++;
        }
        return 1; 
    }
}
Liberadas 1735 artículos originales · ganado elogios 30000 + · vistas 3,59 millones +

Supongo que te gusta

Origin blog.csdn.net/a1439775520/article/details/105317987
Recomendado
Clasificación