前幾天在學習js的時候,碰到了這樣一道面試題,要求計算出給你一個隨機亂敲的一個字符串,要求在其中找出那個字符出現的次數最多,以及出現的個數。
這你有兩種方案,請大家仔細閱讀,有可能在你將來的面試中會碰到。
一:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
//給定一個字符串,需要在其中找出哪個字符出現的次數最多,並且計算出這個字符出現的總次數
//01自定義一個字符串
var str = "fjalsfj1fds;lafsafafafasfas";
/*
02.JSON定義法類似於直接定義法,JSON定義法就是將直接定義法定義的函數與屬性放到大括號中,
並且去掉屬性與函數簽名的對象名,把等於號改為了冒號,每行後面改為逗號!
*/
var json = {};
//03遍歷str字符串
for (var i = 0; i < str.length; i++) {
/*04.str.charAt(i):在字符串中取出對應的i處的索引的字符串。
判斷當前元素是否已經在數組中存在
*/
if (!json[str.charAt(i)]) {
json[str.charAt(i)] = 1;//05給對應數組元素中個數賦值
} else {
json[str.charAt(i)]++;
}
}
var iMax = 0;//出現次數
var iIndex = "";//元素名稱
for (var i in json) {//重新賦值出現最多的元素
if(json[i]>iMax){
iMax = json[i];
iIndex = i;
}
}
alert("出現次數最多的是:"+iIndex+"出現"+iMax+"次");
</script>
</head>
<body>
</body>
</html>
二:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script type="text/javascript">
var str = "adadfdfseffserfefsefseeffffftsdg"; //命名一個變量放置給出的字符串
var maxLength = 0; //命名一個變量放置字母出現的最高次數並初始化為0
var result = ''; //命名一個變量放置結果輸入
while (str != '') { //循環迭代開始,並判斷字符串是否為空
oldStr = str; //將原始的字符串變量賦值給新變量
getStr = str.substr(0, 1); //用字符串的substr的方法得到第一個字符(首字母)
eval("str = str.replace(/" + getStr + "/g,'')");
if (oldStr.length - str.length > maxLength) { //判斷原始的字符串的長度減去替代後字符串長度是否大於之前出現的最大的字符串長度
maxLength = oldStr.length - str.length; //兩字符串長度相減得到最大的字符串長度
result = getStr + "=" + maxLength //返回最大的字符串結果(字母、出現次數)
}
}
alert(result) //彈出結果
</script>
</head>
<body>
</body>
</html>
謝!轉:http://www.cnblogs.com/heyongjun1997/p/5556164.html