подсчет количества слов после последнего появления каждого слова в массиве строк - PullRequest
0 голосов
/ 28 сентября 2011

я работаю над текстом.Я хочу узнать количество слов после последнего вхождения определенного слова в массив строк. Например, String [] array = {cat, rat, cat, bat, cat, cat, bat, fat, mat} иЯ хочу найти последнее вхождение каждого слова в этом массиве и количество слов после последнего вхождения.Как я могу это сделать ???

Ответы [ 3 ]

3 голосов
/ 28 сентября 2011

Итерация и подсчет массива в обратном направлении, и каждое новое слово, которое вы встречаете таким образом, является последним или единственным экземпляром этого слова в массиве.То есть вы можете поместить слова в хэш-набор, чтобы проверить, видели ли вы их уже.Всякий раз, когда вы обнаруживаете новое слово таким образом, вы получаете количество слов за ним со счетчика или вычисляя array.length - currentPosition.

0 голосов
/ 28 сентября 2011

в рубине:

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}
0 голосов
/ 28 сентября 2011

Существует решение с 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 Пример

Надеюсь, что помогает С уважением

...