今天收到朋友的求助。
两道面试题:
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()+"]")