【プログラミング練習問題】1つのアルゴリズムを実現し、1つの文字列のすべての文字が異なるかどうかを決定する.追加のデータ構造の使用が許可されていない場合、どのように処理すればいいですか.


アルゴリズムを記述する前に、ascii文字列かunicode文字列かを確認します.
Asciiコードテーブルは最大256文字:ASCII文字1 byte=8 bitを1バイトで格納するので、最大2^8=256文字まで格納できます
標準ASCIIコード:7ビット符号で、余分な1ビット(最上位)はコンピュータ内部で通常0(データ伝送時にパリティビットとして使用可能)に維持されます.128文字
0~31および127(計33個)は、制御文字または通信専用文字(残りは表示可能文字)
32~126(合計95個)は文字(32はスペース)、
そのうち48~57は0~9 10アラビア数字
65~90は26文字の大文字英字で、
97~122番は26個の小文字英字で、残りはいくつかの句読点、演算記号などである.
拡張ASCIIコード:8ビットコードを使用して、256文字
考え方:
1.異なるascii文字は最大256個あるのでbool型配列char_を設定set、256個の要素を含み、初期はfalse
2.文字列の文字を順次取得してint値に変換し、そのint値をbool型配列の下付き文字としてtrue,ifであるかどうかを確認する(char_set[i])
同じ値が同じ文字であることを示す場合、return false;
そうでなければ対応する値をtrueすなわちchar_に設定set[i] = true;
コードは次のように実装されます.
bool isUniqueChars(string str)
{
    //ascii     256   ,      256    false
    if (str.length() > 256) return false;
     
    //        ,         ,      ,       true.
    bool[] char_Set = new bool[256]; //   false
    for (int i = 0; i < str.length; i++)
    {
        int val = str[i]; //      ,   int     int 
        if (char_Set[val])
        {
            return false;
        }
        char_Set[val] = true; //           ,   value  true
    }
}