DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> Js查找字符串中出現次數最多的字符及個數實例解析
Js查找字符串中出現次數最多的字符及個數實例解析
編輯:關於JavaScript     

如sssfgtdfssddfsssfssss,出現最多的字符是s,出現了12次

傳統寫法

分析:

1.准備一個空的json,通過循環字符串的每個字符來看,如果json裡沒有這個字符,就在json裡創建一個新的數組,並把這個字符放進數組裡,如果json裡有這個字符,繼續把字符添加進數組裡,這時循環完json裡有n個數組

2.找出json裡長度最長的數組,此時長度即個數,而最多的字符就是這個參數,用到for...in...循環和參數attr

var str="sssfgtdfssddfsssfssss";
function max(){
var json={};
var num=0;
var value=null;
for(var i=0;i<str.length;i++){
var k=str[i];
if(!json[k]){
json[k]=[];
}
json[k].push(k); //這裡不需要else,否則只有存在這個字符時才添加。次數會少一次
}
for(var attr in json){
if(num<json[attr].length){
num=json[attr].length;
value=json[attr][0];
}
}
alert("出現最多的字符是:"+value+',出現次數是:'+num);
};
max(str);

如果不想往json裡放東西怎麼做呢?

分析:

1.准備一個空的json,通過循環字符串的每個字符來看,如果json裡沒有這個字符,就把這個字符的數目設為1,如果有則數目++

2.循環json裡的字符,只要存在,就把他的數目賦給一個變量,並且每次都比較新的字符數量和這個變量的大小,如果比變量大,則更新變量的值,最後這個變量的值就是最多字符的數目

而最多的字符就是json裡這個字符

var str="sssfgtdfssddfsssfssss";
function max(){
var json={};
for(var i=0;i<str.length;i++){
var k=str[i]; //k是所有字符,字符串也跟數組一樣可以通過中括號下標方法取到每個子元素
if(json[k]){
json[k]++; //json裡有這個字符時,把這個字符的數量+1,
}
else{
json[k]=1; //否則把這個字符的數量設為1
}
}
var num=0;
var value=null;
for(var k in json){ //s、f、g、t、d
if(json[k]>num){
num=json[k];
value=k;
}
}
alert("出現最多的字符是:"+value+',出現次數是:'+num);
};
max(str); 

正則的方法

分析:

1.字符串轉為數組進行排序,以便正則選出相同的挨在一起的字符

2.通過正則replace()方法的兩個參數,來匹配出現最多的字符和數量

var str="sssfgtdfssddfsssfssss";
var num=0;
var value=null;
function max(){
var new_str=str.split("").sort().join("");
var re=/(\w)\1+/g; //沒有\1,re就是一整個排好序的字符串,有了\1就是出現過的有重復的取出來,\1表示跟前面第一個子項是相同的
new_str.replace(re,function($0,$1){ //$0代表取出來重復的一個個整體,如[s,s...],[f,f..],[d,d....] $1代表這個整體裡的字符
if(num<$0.length){
num=$0.length;
value=$1
}
});
alert(value+":"+num)
};
max(str);

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved