文字列から最初の非繰り返し文字を見つける方法は?
たとえば、文字列「Silent King Shen Silent Two」では、最初の非繰り返し文字は「」です。 「Shen」が繰り返されるので、「Mo」が繰り返されます。
public class FindNonRepeatingChar { public static void main(String[] args) { System.out.println(printFirstNonRepeatingChar("沉默王沉沉默二")); System.out.println(printFirstNonRepeatingChar("沉默王沉")); System.out.println(printFirstNonRepeatingChar("沉沉沉")); } private static Character printFirstNonRepeatingChar(String string) { char[] chars = string.toCharArray(); List<Character> discardedChars = new ArrayList<>(); for (int i = 0; i < chars.length; i++) { char c = chars[i]; if (discardedChars.contains(c)) continue; for (int j = i + 1; j < chars.length; j++) { if (c == chars[j]) { discardedChars.add(c); break; } else if (j == chars.length - 1) { return c; } } } return null; } }
出力結果は次のとおりです:
王 默 null
私のアイデアについて話しましょう:
1) 文字列を文字配列に分割します。
2) リストを宣言し、その中に繰り返し文字を入れます。
3) 外側の for ループは最初の文字から始まり、すでにリストにある場合は次のラウンドに進みます。
4) ネストされた for ループは、最初の文字の次の文字 (j = i 1) からトラバースを開始します。前の文字の重複が見つかった場合、その文字はリストに追加され、リストから飛び出します。内側の層。ループ; 最後の (j == chars.length - 1) が見つからない場合、それは最初の非反復文字ですよね?
以上がJava で最初の非反復文字を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。