저는이 문제에 대해 많은 시간을 할애했지만 우아한 해결책을 제시하지 못했습니다.문자열에 대부분의 문자가있는 문자 가져 오기
문제 : 다른 문자 ("ABDDEEDDC")가있는 문자열이 있는데 어떤 문자가 가장 많이 발생하는지 알아야합니다. 어떤 도움이라도 대단히 감사하겠습니다.
내가 아는 건배, 니코
이저는이 문제에 대해 많은 시간을 할애했지만 우아한 해결책을 제시하지 못했습니다.문자열에 대부분의 문자가있는 문자 가져 오기
문제 : 다른 문자 ("ABDDEEDDC")가있는 문자열이 있는데 어떤 문자가 가장 많이 발생하는지 알아야합니다. 어떤 도움이라도 대단히 감사하겠습니다.
내가 아는 건배, 니코
이나는 그것에 대한 지원 내장 어떤 알고하지 않습니다,하지만 당신은 문자열의 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에 나타나는 횟수.
((!) 참고 :. 내가 대신 charCounter.hasOwnProperty(str.charAt(i))
당신이 str.charAt(i) in charCounter
를 사용할 수 있다고 생각합니다,하지만 난 그것을 테스트하지했습니다)
까지가 기본 제공이에 대한 지원.하지 그러나 문자열을 String.charAt()
으로 반복하고 결과를 배열에 저장할 수 있습니다. 배열에 이미 특정 문자가 포함되어있는 경우 숫자 등을 늘릴 수 있습니다.
하거나 정렬 배열로 분할 한 후 바로 각 값을 셀 수
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');
답장을 보내 주셔서 감사합니다. 어떤 이유로 든 코드를 사용하여 출력을 얻을 수 없으며 문제를 찾을 수없는 것 같습니다. 무엇이 잘못 될 수 있습니까? – nikoka
초기화하는 것을 잊었습니다. charCounter [str.charAt (i)] ++; 그렇지 않으면 charCounter [str (char)] (char) [str.charAt (i)] + .charAt (i)] = 1; @nikoka – Amarghosh
예를 제공하고 내 "답변 접근"에 대한 자세한 내용을 추가하는 경우 +1 – hering