Тестирование на повторяющиеся символы в строке - PullRequest
8 голосов
/ 06 мая 2009

Я делаю некоторую работу со строками, и у меня есть сценарий, в котором мне нужно определить, содержит ли строка (обычно маленькая <10 символов) повторяющиеся символы. </p>

`ABCDE`  // does not contain repeats 
`AABCD`  // does contain repeats, ie A is repeated

Я могу перебрать string.ToCharArray () и проверить каждый символ на предмет всех остальных символов в char [], но я чувствую, что упускаю что-то очевидное .... может, мне просто нужен кофе. Кто-нибудь может помочь?

EDIT:

Строка будет отсортирована, поэтому порядок не важен, поэтому ABCDA => AABCD

Частота повторений также важна, поэтому мне нужно знать, является ли повтор парным или триплетным и т. Д.

Ответы [ 11 ]

0 голосов
/ 06 мая 2009

Когда нет приказа работать, вы можете использовать словарь для подсчета:

String input = "AABCD";
var result = new Dictionary<Char, int>(26);
var chars = input.ToCharArray();
foreach (var c in chars)
{
    if (!result.ContainsKey(c))
    {
        result[c] = 0; // initialize the counter in the result
    }
    result[c]++;
}

foreach (var charCombo in result)
{
    Console.WriteLine("{0}: {1}",charCombo.Key, charCombo.Value);   
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...