面试题之:字符串
Posted bala
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试题之:字符串相关的知识,希望对你有一定的参考价值。
// 公用 html <input type="text" id="input" placeholder="请输入" /> <button onclick="set()">button</button> <div class="result"> 结果:<div id="result"></div> </div>
// 公用 js function set(){ let str = document.getElementById(‘input‘).value this.handle(str) } // 显示结果于界面中 function showResult(v){ ... // 结果处理,此处为了与核心代码分离,所以提取了出来 let ret = ... // 处理后得到的结果 document.getElementById(‘result‘).innerText = ret }
1、统计字符串中每个字符出现的次数
function handle(str) { // str : 需要统计的字符串 let newStr = {} // 没有重复的数据 for(let i=0; i< str.length; i++){ let key = str[i] newStr[key] = newStr[key] ? newStr[key]+1 : 1 } let max = 0 // 出现次数最多的值 for(let j in newStr){ max = newStr[j] > max ? newStr[j] : max } this.showResult(max) // 显示结果 }
2、打印出字符串中出现次数最多的字符
function handle(str){ // str : 需要统计的字符串 let newStr = {} // 没有重复的数据 for(let i=0; i< str.length; i++){ let key = str[i] newStr[key] = newStr[key] ? newStr[key]+1 : 1 } let max = 0 //出现次数最多的值 let maxArr = [] // 存储次数最多的字符 数组 for(let j in newStr){ if(newStr[j] > max) { // 大于最大次数,更新存储数组 max = newStr[j] maxArr = [] let obj = { key: j, value: max } maxArr.push(obj) }else if(newStr[j] == max){ // 考虑到可能有最多次数相等的情况 let obj = { key: j, value: max } maxArr.push(obj) } } this.showResult(maxArr)
}
3、替换字符串中某一段字符串。
如将字符串“hello, annil, nice to meet you! annil, ahh…” 中的 ‘annil‘ 替换成 ‘anderson’
// 方法一: replace() function handle(str) { let res = str.replace(‘annil‘, ‘anderson‘) // 只会匹配第一个匹配值 // str.replace(/annil/g, ‘anderson‘) // 匹配所有 // str.replace(new RegExp(key, ‘g‘), ‘b‘) //需要替换的字符串是一个变量 this.showResult(res) } // 方法二: 不采用replace 方法实现 该方法可以看做replace的实现 function handle(str){ let newStr = str let patt = new RegExp(‘annil‘, ‘g‘) // patt = /annil/g let ret // ret = patt.exec(str) ret = [‘annil‘]
// patt.global = true // 全局正则
while((ret = patt.exec(str)) != null) { let arr = newStr.split(ret[0]) // arr = [‘hello, ‘, ‘, nice to meet you! ‘, ‘, ahh...‘] newStr = arr.join(‘anderson‘) } this.showResult(newStr) }
知识点:
RegExp对象:表示正则表达式,对字符串执行模式匹配的强大工具。
exec():检索字符串中的正则表达式的匹配。
4、找字符串中最长 / 最短的单词
function handle(str){ let arr = str.split(‘ ‘) arr.sort((a, b) => { return b.length - a.length // 返回值为正,后面的数在前面; 为负,前面的数在前面。 sort 在原数组上进行排序,不生成副本 }) this.showResult(arr[0]) }
5、输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符串。不可以使用replace。
例如:输入“They are students” 和“aeiou”
则删除之后的第一个字符串变成: “Thy r stdnts”
以上是关于面试题之:字符串的主要内容,如果未能解决你的问题,请参考以下文章