Получить персонаж с большинством случаев в строке - PullRequest
1 голос
/ 24 августа 2010

Я уже некоторое время пытаюсь обернуть голову вокруг этого, но не смог найти элегантного решения.

Проблема: у меня есть строка с разными символами («ABDDEEDDC»), и мне нужно знать, какой символ встречается чаще всего.Любая помощь будет принята с благодарностью.

Ура, Нико

Ответы [ 3 ]

4 голосов
/ 24 августа 2010

Я не знаю какой-либо встроенной поддержки для него, но вы можете использовать свойство charAt() строк и ассоциативных массивов, чтобы сделать следующее:

var charCounter:Object = new Object();
var str:String = "ABDDEEDDC";
var maxCount:int = 0;
var maxChar:String = "";

for(var i = 0; i < str.length; i++) {
    // Must make sure the associate array is initialised!
    if(charCounter.hasOwnProperty(str.charAt(i)) {
        charCounter[str.charAt(i)]++;
    } else {
        charCounter[str.charAt(i)] = 1;
    }
    if(charCounter[str.charAt(i)] > maxCount) {
        maxCount = charCounter[str.charAt(i)];
        maxChar = str.charAt(i);
    }
}

В конце этогосимвол должен быть в maxChar, и сколько раз он появляется в maxCount.

charAt().

Ассоциативные массивы .

(Sidenote: я считаю, что вместо charCounter.hasOwnProperty(str.charAt(i)) вы можете использовать str.charAt(i) in charCounter, но я его не проверял.)

0 голосов
/ 24 августа 2010

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

var str:String = "ABDDEEDDC";
var a:Array = str.split('');
a.sort();
var currChar:String = '';
var currCount:int = 0;
var maxChar:String = '';
var maxCount:int = 0;
for(var i:int=0; a[i]; i++){
    if(currChar == a[i]) {
        currCount++;
        if(currCount > maxCount){
            maxCount = currCount;
            maxChar = currChar;
        }
    } else {
        currChar = a[i];
        currCount = 1;
    }
}
trace(maxChar + ' occurs '+maxCount+' times');
0 голосов
/ 24 августа 2010

Насколько я знаю, встроенной поддержки для этого нет.Но вы можете перебрать строку с String.charAt() и, возможно, сохранить результаты в массиве.Если массив уже содержит определенный символ, вы можете увеличить число или что-то в этом роде.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...