Heim >Backend-Entwicklung >PHP-Problem >PHP bestimmt, ob eine Zeichenfolge wiederholt wird
PHP ermittelt, ob eine Zeichenfolge wiederholte Zeichen enthält:
Methode 1,
1. Konvertieren Sie die Zeichenfolge in ein Zeichenarray
2. Verwenden Sie Arrays.sort(char[]), um das Zeichenarray zu sortieren, und durchlaufen Sie dann das gesamte sortierte Array nacheinander, wenn es nicht das letzte Zeichen ist und das aktuelle Zeichen mit dem darauffolgenden Zeichen übereinstimmt , dann direkt false zurückgeben, andernfalls mit dem Durchlaufen fortfahren. Wenn sich alle Elemente von den folgenden unterscheiden oder das letzte Zeichen durchlaufen wurde, wird davon ausgegangen, dass es keine wiederholten Zeichen gibt, das heißt, es wird true zurückgegeben
3. Außerdem hat die Zeichenfolge für Null oder die Länge 0 keine wiederholten Zeichen und gibt true zurück.
Methode 2.
Erstellen Sie eine Hash-Tabelle und durchlaufen Sie die Zeichenfolge, wenn das Zeichen nicht vorhanden ist Wenn es in der Hash-Tabelle enthalten ist, wird „false“ zurückgegeben. Wenn keine wiederholten Zeichen vorhanden sind, wird schließlich „true“ zurückgegeben.
Methode 3.
Beide oben genannten Methoden erfordern zusätzlichen Speicherplatz. Wenn Sie keinen Speicherplatz freigeben möchten, können Sie String.indexOf(char ch, int fromIndex) verwenden ), um Zeichen zu durchlaufen. Die Zeichen in der Zeichenfolge können bis zum vorletzten Zeichen durchlaufen werden. Bestimmen Sie für jedes Zeichen einfach, ob es danach wiederholte Zeichen gibt. Wenn ja, geben Sie „false“ zurück. Wenn es keine wiederholten Zeichen gibt, geben Sie „true“ zurück.
Implementierungscode:
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; } }
Empfohlen: PHP-Server
Das obige ist der detaillierte Inhalt vonPHP bestimmt, ob eine Zeichenfolge wiederholt wird. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!