Étant donné une chaîne str, encapsulez une méthode pour trouver la longueur de la plus longue sous-chaîne qui ne contient pas de chaînes répétées, et la position de la plus longue sous-chaîne

<script>

        // D'abord encapsulez une vérification de méthode pour déterminer si le tableau a des doublons

        vérification de fonction(arr) {

            // Déclare un objet vide pour enregistrer le nombre d'occurrences de chaque élément du tableau

            soit obj = {} ;

            for (let i = 0; i < arr.length; i++) {

                soit char = arr[i] ;

                //Si cet élément n'apparaît pas dans l'objet, définissez la clé dans l'objet et la valeur est 1, sinon ajoutez-en une

                si (obj[car] == non défini) {

                    obj[car] = 1

                } autre {

                    obj[car]++

                }

            }

            pour (laisser k dans obj) {

                si (obj[k] > 1) {

                    // S'il y a plus d'une occurrence dans l'objet, il est faux et renvoie faux

                    retourner faux

                }

            }

            retourner vrai

        }

        fonction jugeFils(str) {

            soit arr = [] ;

            for (let i = 0; i < str.length; i++) {

                laisser compter = 0 ;

                // Ce tableau est utilisé pour contenir des éléments de chaîne et est utilisé pour déterminer s'il existe des doublons

                soit arr2 = [] ;

                arr2.push(str.charAt(i));

                for (let j = i + 1; j < str.length; j++) {

                    // mettre dans le tableau

                    arr2.push(str.charAt(j))

                    //Pour déterminer si le tableau arr2 a des doublons, utilisez la méthode de vérification encapsulée avant

                    si (!vérifier(arr2)) {

                        //s'il y a des doublons

                        arr2.pop()//Supprimer le dernier

                        compte = arr2.longueur ;

                        //Sortie de la boucle

                        casser;

                    } autre {

                        // pas de doublons

                        compte = arr2.longueur ;

                    }

                }

                //Pousser dans arr pour une comparaison ultérieure

                arr.push(count)

            }

            // trouve la valeur maximale

            laissez max = Math.max(...arr);

            // Boucle dans le tableau pour trouver la valeur maximale

            soit arr_total = [] ;

            for (let k = 0; k < arr.length; k++) {

                si (arr[k] == max) {

                    arr_total.push(k)

                }

            }

            arr_total.forEach(item => {

                console.log(`Lorsque l'indice est ${item}, il y a la plus grande sous-chaîne non répétée, le nombre est ${max}`)

            })

        }

        jugeFils("abcdabjsjkfewnka")

    </script>

おすすめ

転載: blog.csdn.net/weixin_68067009/article/details/124216111