0

私はテキストに取り組んでいます。文字列の配列で特定の単語が最後に出現した後の単語数を見つけたい.たとえば、String[] array={cat,rat,cat,bat,cat,cat,bat,fat,mat} とこの配列内のすべての単語の最後の出現と、最後の出現後の単語数を見つけたいです。どうすればできますか?

4

3 に答える 3

3

配列を逆方向に繰り返しカウントします。この方法で遭遇するすべての新しい単語は、配列内のこの単語の最後または唯一のインスタンスです。つまり、単語をハッシュセットに入れて、すでに見たことがあるかどうかを確認できます。この方法で新しい単語を検出するたびに、カウンターから、またはを計算することによって、その背後にある単語の数を取得しますarray.length - currentPosition

于 2011-09-27T22:49:33.750 に答える
0

文字列を操作する場合は、DotNetにRegExを使用した解決策があります。

ここで配列を検索するには、簡単な例を示します。

    using System;

class Program
{
    static void Main()
    {
    //
    // Use this array of string references.
    //
    string[] array1 = { "cat", "dog", "carrot", "bird" };
    //
    // Find first element starting with substring.
    //
    string value1 = Array.Find(array1,
        element => element.StartsWith("car", StringComparison.Ordinal));
    //
    // Find first element of three characters length.
    //
    string value2 = Array.Find(array1,
        element => element.Length == 3);
    //
    // Find all elements not greater than four letters long.
    //
    string[] array2 = Array.FindAll(array1,
        element => element.Length <= 4);

    Console.WriteLine(value1);
    Console.WriteLine(value2);
    Console.WriteLine(string.Join(",", array2));
    }
}

また、 MSDNの例を見ることができます

よろしくお願いします

于 2011-09-27T22:51:20.033 に答える
0

ルビーの場合:

arr = [:cat,:rat,:cat,:bat,:cat,:cat,:bat,:fat,:mat]
hash = {}
arr.reverse.each_with_index {|item, index| hash[item]=index unless hash.has_key?(item)}
hash
=> {:mat=>0, :fat=>1, :bat=>2, :cat=>3, :rat=>7}
于 2011-09-27T23:15:51.353 に答える