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 Example

希望对您有所帮助

于 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 回答