チャレンジ文字列
最長の非反復サブ文字列
文字列を考えると、あなたは、繰り返し文字の最長の文字列のサブ長さを含んでいないかを調べます。
分析:
場合は、ハッシュテーブルのインデックスレコードの文字最近、私は、最長非繰り返し部分文字列の末尾である現在の文字位置を求めて、位置を横断しました。
コード:
クラスソリューション{ 公共 のint lengthOfLongestSubstring(文字列S){ もし、(S == NULL || s.length()== 0 ){ 戻り 0 。 } 地図 <文字、整数>マップ= 新しい HashMapの<文字、整数> (); int型開始= -1 ; int型のres = 0 ; 以下のために(int型 i = 0; i)は(s.lengthを<; iは++ ){ チャー C = s.charAt(I)。 もし(!map.containsKey(C)){ map.put(C、 -1 )。 } 開始 = Math.max(開始、map.get(c)参照)。 map.put(C、I)。 RES = Math.max(RES、I - 開始)。 } 戻りRESと、 } }