今天收到朋友的求助。
兩道面試題:
1.請空字符串前后的空格。
實現思路:
- 在原型String對象上擴展一個方法叫trim;
- 里面的正則是查找除了空格以外的所有字符,這樣就起到去除空格了。
- 接着調用就ok了。
String.prototype.trim=function(){
return this.replace(/(^\s*)|(\s*$)/g,"");
}
var str=" test ";//你的字符串
alert("["+str.trim()+"]")
2.找出出現最多次數的字符
- 先來一個高級版的哈
- 實現原理:利用while循環比較每次計算后的字符串長度
var str = "aaaabbbcccccddfgh";
var maxLength = 0;
var result = "";
while(str!=''){
oldStr = str;
getStr = str.charAt(0);
str = str.replace(new RegExp(getStr,"g"),"");
if( oldStr.length-str.length > maxLength){
maxLength = oldStr.length-str.length;
result = getStr + "=" + maxLength;
}
}
alert(result);
- 來一個復雜的但是思路是較大眾的
- 就是循環遍歷然后比較,分別求出字符和出現的次數
var str = "aaaabbbccccddfgh";
var obj = {};
for (var i = 0, l = str.length; i < l; i++) {
var key = str[i];
if (typeof obj[key] == 'undefined') {
obj[key] = 1;
} else {
obj[key]++;
}
}
var max = -1;
var max_key = "";
var key;
for (key in obj) {
if (max < obj[key]) {
max = obj[key];
max_key = key;
}
}
alert("字符:"+max+" 出現次數:"+max_key);
String.prototype.trim=function(){ return this.replace(/(^\s*)|(\s*$)/g,"");}var str=" test ";//你的字符串alert("["+str.trim()+"]")
