如何從字串中找出第一個不重複的字元?
比如說字串“沉默王沉沉默二”,第一個不重複的字元是“王”,對吧?因為“沉”重複了,“默”重複了。
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)宣告一個 List,把重複的字元放進去。
3)外層的 for 循環,從第一個字元開始,如果已經在 List 中,繼續下一輪。
4)嵌套的for 循環,從第一個字元的下一個字元(j = i 1)開始遍歷,如果找到和之前字元重複的,就加入到List 中,跳出內層的循環;如果找到最後(j == chars.length - 1)也沒有找到,就是第一個不重複的字符,對吧?
以上是如何在Java中找出第一個不重複的字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!