我正在处理文本。我想要查找字符串数组中某个特定单词最后一次出现后的单词数。例如,String[]数组={猫、老鼠、猫、蝙蝠、猫,猫,蝙蝠,脂肪垫}我想找到这个数组中每个单词最后出现的地方,以及最后出现之后的单词数。我该怎么做?
迭代并向后计数数组,以这种方式遇到的每个新词都是该词在数组中的最后一个或唯一实例。也就是说,你可以把这些单词放在一个散列集中,检查你是否已经看到了它们。当你用这种方法检测到一个新单词时,你可以从计数器或通过计算array.length - currentPosition
得到它后面的单词数。
如果您要处理字符串,那么在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示例
希望有帮助关于
In Ruby:
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}