Maison > développement back-end > Problème PHP > PHP détermine si une chaîne est répétée

PHP détermine si une chaîne est répétée

Libérer: 2023-02-28 06:02:02
original
4231 Les gens l'ont consulté

PHP détermine si une chaîne est répétée

PHP détermine si une chaîne comporte des caractères répétés :

Méthode 1,

1 Convertir la chaîne en un tableau de caractères

2. Utilisez Arrays.sort(char[]) pour trier le tableau de caractères, puis parcourez l'intégralité du tableau trié un par un s'il ne s'agit pas du dernier caractère et si le caractère actuel est le même que le caractère qui le suit. , puis retournez false directement. , sinon continuez à parcourir. Si tous les éléments sont différents de ce qui suit ou si le dernier caractère a été parcouru, on considère qu'il n'y a pas de caractères répétés, c'est-à-dire que true est renvoyé

. 3. De plus, pour null ou la longueur est 0 La chaîne n'a pas de caractères répétés et renvoie vrai

Méthode 2.

Créez une table de hachage et parcourez la chaîne si le caractère ne l'est pas. inclus dans la table de hachage, ajoutez-le. S'il est inclus, il renvoie false, s'il n'y a pas de caractères répétés, alors il renvoie finalement true.

Méthode 3.


Les deux méthodes ci-dessus nécessitent de l'espace supplémentaire. Si vous ne souhaitez pas allouer d'espace, vous pouvez utiliser String.indexOf(char ch, int fromIndex. ) pour parcourir les caractères Les caractères de la chaîne peuvent être parcourus jusqu'à l'avant-dernier caractère. Pour chaque caractère, déterminez simplement s'il y a des caractères répétés par la suite. Si c'est le cas, renvoyez false. S'il n'y a pas de caractères répétés, renvoyez true.

Code d'implémentation :


public class Solution {
    /*
     * @param str: A string
     * @return: a boolean
     */
    public boolean isUnique(String str) {
        // write your code here
        /*
        //思路一
        //如果str是null,那么抛出异常
        if(str == null){
            throw new IllegalArgumentException("invalid parameters");
        }
        
        //如果str的长度是0或者1,那么没有重复字符,返回true
        if(str.length() == 0 || str.length() == 1){
            return true;
        }
        
        //将字符串转成字符数组
        char[] ch = str.toCharArray();
        
        //对数组进行排序
        Arrays.sort(ch);
        
        //遍历数组,看当前字符是否和后面字符相同,相同就返回false,否则返回true
        for(int i = 0; i < ch.length-1; i++){
            if(ch[i] == ch[i+1]){
                return false;
            }
        }
        
        return true;
        */
        
        /*
        //思路二
        //如果str是null,那么抛出异常
        if(str == null){
            throw new IllegalArgumentException("invalid parameters");
        }
        //如果str的长度是0或者1,那么没有重复字符,返回true
        if(str.length() == 0 || str.length() == 1){
            return true;
        }
        
        //创建hash表,将字符串字符存到hash表中
        HashSet<Character> hs = new HashSet<Character>();
        
        for(int i = 0; i < str.length(); i++){
            if(hs.contains(str.charAt(i))){
                return false;//hash表中有相同的字符,那么说明有重复的字符
            }
            
            hs.add(str.charAt(i));
        }
        
        return true;
        */
        
        //思路三
        //如果str是null,那么抛出异常
        if(str == null){
            throw new IllegalArgumentException("invalid parameters");
        }
        //如果str的长度是0或者1,那么没有重复字符,返回true
        if(str.length() == 0 || str.length() == 1){
            return true;
        }
        
        //从前向后遍历字符串,对每个字符,调用String.indexOf()看其后面是否有相同的字符,如果有返回false,否则最后返回true
        for(int i = 0; i < str.length()-1; i++){
            if(str.indexOf(str.charAt(i), i+1) != -1){
                return false;
            }
        }
        
        return true;
 
    }
}
Copier après la connexion

Recommandé :

serveur php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal