面试题之:字符串
时间:2019-10-22
本文章向大家介绍面试题之:字符串,主要包括面试题之:字符串使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
// 公用 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”
原文地址:https://www.cnblogs.com/bala/p/11720685.html
- iBatis.Net(5):Data Map(了解)
- ModernPHP读书笔记(三)——PHP的良好实践
- PHP开发过程的那些坑(一) ——对象拷贝
- PHP开发过程的那些坑(二) ——PHP empty函数
- Thinking in SQL系列之数据挖掘Apriori关联分析再现啤酒尿布神话
- PHP开发过程的那些坑(三) ——PHParray_shift函数
- CSS3弹性盒布局
- iBatis.Net(4):DataMapper API
- PHP开发过程的那些坑(四) ——PDO bindParam函数
- iBatis.Net(3):创建SqlMapper实例
- PHP开发过程的那些坑(五) ——PHP的empty()
- iBatis.Net(2):基本概念与配置
- ASP.NET Web API中的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析
- 解决Entity Framework查询匿名对象后的跨域访问的一种方式
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 基于Android FileProvider 属性配置详解及FileProvider多节点问题
- Android 通过API获取数据库中的图片文件方式
- android尺子的自定义view——RulerView详解
- 浅谈Android Studio3.6 更新功能
- Android 自定义View手写签名并保存图片功能
- android 使用Xml文件定义Shape方式
- Android 判断所有字段是否已经输入的实例
- Android 将网络的Url资源转换为Drawable资源方式
- Android实现动态改变shape.xml中图形的颜色
- 解决android.support.v4.content.FileProvide找不到的问题
- 为Android系统添加config.xml 新配置的设置
- 浅析Android录屏 MediaRecorder
- 实用的网站开发工具导航源码,可以提高工作效率
- Github服务端和客户端完成本地代码上传至Github教程
- 一软在手截图无忧:ShareX截图神器-短小精悍功能完备 自动化任务可截动图截视频