【问题标题】:counting number of words after last occurrence of every word in an array of strings计算字符串数组中每个单词最后一次出现后的单词数
【发布时间】:2011-11-26 10:50:39
【问题描述】:
我正在处理文本。我想在字符串数组中查找特定单词最后一次出现之后的单词数。例如,
字符串[] 数组={猫、老鼠、猫、蝙蝠、猫、猫、蝙蝠、脂肪、垫子}
我想找到这个数组中每个单词的最后一次出现以及最后一次出现之后的单词数。
怎么办???
【问题讨论】:
标签:
java
text-processing
last-occurrence
word-count
arrayofstring
【解决方案1】:
向后迭代和计数数组,以这种方式遇到的每个新单词都是该单词在数组中的最后一个或唯一一个实例。您可以将单词放入哈希集中以检查您是否已经看过它们。每当您以这种方式检测到一个新单词时,您都可以从计数器或通过计算 array.length - currentPosition 获得它后面的单词数。
【解决方案2】:
如果您要使用字符串,RegEx in DotNet 有一个解决方案。
这里是一个在数组中搜索的简短示例:
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
希望有所帮助
问候
【解决方案3】:
在 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}