トピックリンク:
アイデア:各文字が表示され、ストレージの位置は、2次元配列の最後に出現するに、回数をASCIIコードマッピングを使用して、再度反復二次元アレイ、及び数1位置が最小現れる特定し、この位置への復帰がOKであり、複雑なO(N)の
実装のソースコード。
以下のためのパッケージ変更niuke; / ** * AZ:97-122 * AZ:65-90 * / パブリック クラスが最初に現れるだけで一つの文字{ 公共 のint FirstNotRepeatingChar(String str)文字{ IF(str.length()== 0 | | STR == nullの)リターン 0 ; int型 [] [] =統計新しい新しい int型 [2 [53れる] ]; //はASCIIのマッピング、タイムズまずISは、第二の位置のIS のchar [] TEMP = str.toCharArray(); のために(INT Iは= 0; I <temp.length; ++ I){ IF(TEMP [I]> = 97){ int型トランス= TEMP [I] - 96 。 統計[トランス] [ 0] + = 1 ; 統計[トランス] [ 1] = I。 } 他{ int型トランス= TEMP [I] - 38 。 統計[トランス] [ 0] + = 1 ; 統計[トランス] [ 1] = I。 } } // 統計は、上にある INT分= 54 。 // char型のRES = '#'; 以下のために(INT I 1 =; I <53; ++ i)が{ もし(統計[I] [0] == 1 &&統計[I] [1] < 分){ 分 =統計[I] [1 ]。 // RES =(CHAR)I。 } } もし(分== 54 ) リターン -1 。 それ以外 の戻り 分。 } }
コードはACです
私は助けたいです
上記