面试题:1.清空字符串前后的空格;2.找出出现最多的字符

时间:2023-01-04 17:12:02

今天收到朋友的求助。

两道面试题:

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()+"]")