C#
 Computer >> コンピューター >  >> プログラミング >> C#

C#を使用して組み込み関数なしで最初の一意の文字のインデックスを返す方法は?


長さ256の空の新しい配列を作成し、文字列全体を1文字ずつトラバースして、新しい配列の値をインクリメントします。最後に、配列全体をトラバースして、値が1の最初の文字を返します。

例1

aabccd-→2121→カウント1の最初の文字を返します。つまりbです。

例2

using System;
namespace ConsoleApplication{
   public class Arrays{
      public int ReturnIndexOfFirstUniqueCharachter(string s){
         int index = -1;
         int[] arrayValues = new int[256];
         for (int i = 0; i < s.Length; i++){
            int value = s[i] - 'a';
            arrayValues[value] += 1;
         }
         for (int i = 0; i < s.Length; i++){
            int value = s[i] - 'a';
            if (arrayValues[value] == 1){
               index = i;
               break;
            }
         }
         return index;
      }
   }
   class Program{
      static void Main(string[] args){
         Arrays a = new Arrays();
         Console.WriteLine(a.ReturnIndexOfFirstUniqueCharachter("bookisgreat"));
         Console.ReadLine();
      }
   }
}

出力

0

  1. Pythonで指定された文字列の最初の繰り返し文字のインデックスを見つけるプログラム

    文字列sがあるとすると、その中の最初の繰り返し文字のインデックスを見つける必要があります。繰り返し文字が見つからない場合は、-1を返します。 したがって、入力が「abcade」のような場合、「a」はインデックス3に再び存在するため、出力は3になります。 これを解決するには、次の手順に従います- マップ文字を定義する 0からsのサイズの範囲のiについては、 文字でs[i]の場合、 私を返す それ以外の場合、 chars [s [i]]:=chars [s [i]] + 1 戻り値-1 理解を深めるために、次の実装を見てみましょう- 例 from collections

  2. Pythonの文字列の最初の一意の文字

    文字列があり、文字列内の最初の一意の文字を検索する必要があるとします。したがって、文字列が「人」のようなものである場合、出現する最初の文字は「o」です。したがって、インデックスが返されます。ここでは2です。そのような文字がない場合は、-1を返します。 これを解決するには、次の手順に従います- 1つの頻度マップを作成する 文字列内の文字cごとに、を実行します。 cが頻度にない場合は、それを頻度に挿入し、値1を入力します それ以外の場合は、頻度のカウントを増やします 頻度マップをスキャンします。特定のキーの値が1の場合はそのキーを返し、そうでない場合は-1を返します。 例 理解を深め