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