質問:
文字列 (0<=文字列長<=10000、すべて文字で構成) 文字内で 1 回だけ出現する最初の文字を検索し、次の結果を返します。そうでない場合、その位置は -1 を返します (大文字と小文字を区別する必要があります)
関連ビデオ チュートリアルの推奨事項:Java オンライン チュートリアル
ソリューションのアイデア:
質問の要件は非常に明確で、文字列を走査して文字を数えるというものです。数えた後は、カウント 1 の文字を見つけるだけです。明らかに、これにはハッシュマップの使用が必要です。キーは文字列内の各文字であり、値は文字列内でこの文字が出現する回数です。
コードは次のとおりです:
import java.util.LinkedHashMap; public class Solution { public int FirstNotRepeatingChar(String str) { int len = str.length(); LinkedHashMap<Character, Integer> map = new LinkedHashMap<>(); for (int i = 0; i < len; i++) { char c = str.charAt(i); Integer val = map.get(c); map.merge(c, 1, (oldValue, newValue) -> oldValue + newValue); } Character resultKey = null; for (Character c : map.keySet()){ if (map.get(c) == 1){ resultKey = c; break; } } for (int i = 0 ;i < len; i++){ if (str.charAt(i) == resultKey){ return i; } } return -1; } }
推奨される関連記事とチュートリアル: javaクイック スタート
以上がJava は、一度だけ出現する最初の文字の検索を実装します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。