Подсчет количества слов после последнего вхождения каждого слова в массиве строк
Я работаю над текстом Я хочу узнать количество слов после последнего вхождения определенного слова в массив строк. Например, String[] array={cat,rat,cat,bat,cat,cat,bat,fat,mat} и Я хочу найти последнее вхождение каждого слова в этом массиве и количество слов после последнего вхождения. Как мне это сделать???
3 ответа
Повторяйте и считайте массив в обратном направлении, и каждое новое слово, с которым вы сталкиваетесь таким образом, является последним или единственным экземпляром этого слова в массиве. То есть вы можете поместить слова в хэш-набор, чтобы проверить, видели ли вы их уже. Всякий раз, когда вы обнаруживаете новое слово таким образом, вы получаете количество слов за ним со счетчика или вычисляя array.length - currentPosition
,
В рубине:
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}
Существует решение с RegEx в 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 Пример
Надеюсь, что помогает С уважением