用JS找出字符串中出现次数最多的字母

作者:Blank 来源:怿飞's Blog 时间:2007-11-12 13:40:00 

网上有这样一道题目:

一个字符串String=“adadfdfseffserfefsefseetsdg”,找出里面出现次数最多的字母和出现的次数。

经典的解答思路为:取出字符串的第一个字符(首字母),利用的字符串的replace方法将符合正则表达式(第一个字符)替代为空,此字母出现的次数为原始的字符串长度减去替代后的字符串长度。循环迭代找出长度最长的字母。


<script type="text/javascript">
//<![CDATA[
var str ="adadfdfseffserfefsefseeffffftsdg"; //命名一个变量放置给出的字符串
var maxLength = 0; //命名一个变量放置字母出现的最高次数并初始化为0
var result = ''; //命名一个变量放置结果输入
while( str != '' ){ //循环迭代开始,并判断字符串是否为空
  oldStr = str; //将原始的字符串变量赋值给新变量
  getStr = str.substr(0,1); //用字符串的substr的方法得到第一个字符(首字母)
  eval("str = str.replace(/"+getStr+"/g,'')"); //详细如补充
  if( oldStr.length-str.length > maxLength ) { //判断原始的字符串的长度减去替代后字符串长度是否大于之前出现的最大的字符串长度
 maxLength = oldStr.length-str.length; //两字符串长度相减得到最大的字符串长度
 result = getStr + "=" + maxLength //返回最大的字符串结果(字母、出现次数)
 }
}
alert(result) //弹出结果
//]]>
</script>

补充:



eval("str = str.replace(/"+getStr+"/g,'')");


可能很多人想这样写str = str.replace(/getStr/g,''),可结果却是会出错的。为什么呢,在这句中正则表达式匹配的是getStr字符串,而不是getStr指向的首字母。通过eval方法可以避免(首先getStr得到指向的首字母,用字符串连接"str = str.replace(/"+getStr+"/g,'')",最后在eval中执行这段代码,即:先解释Javascript代码,然后再执行它)。

PS: 小马 指出eval性能不好,容易出错,而且可读性不好。建议将

eval("str = str.replace(/"+getStr+"/g,'')")

改为:



str = str.replace(new RegExp(getStr,"g"),"")


标签:字符串,js
0
投稿

猜你喜欢

  • Python实现将Excel转换成为image的方法

    2023-08-10 03:59:55
  • python 判断字符串中是否含有汉字或非汉字的实例

    2022-07-01 11:25:59
  • javascript框架设计之框架分类及主要功能

    2024-04-18 09:33:40
  • MySQL找出未提交事务的SQL实例浅析

    2024-01-23 04:08:25
  • 小系统单据自动生成存储过程

    2024-01-16 23:16:17
  • 让MYSQL彻底支持中文

    2008-12-24 16:23:00
  • Python程序设计入门(3)数组的使用

    2023-07-20 07:11:15
  • js表格排序实例分析(支持int,float,date,string四种数据类型)

    2024-05-03 15:30:24
  • javascript 自动转到命名锚记

    2024-04-29 13:44:46
  • 浅谈pandas用groupby后对层级索引levels的处理方法

    2022-10-15 01:43:37
  • 用VB编写ActiveX DLL实现ASP编程

    2008-10-21 21:28:00
  • Python编程调用百度API实现地理位置经纬度坐标转换示例

    2023-12-30 11:44:38
  • 五个提升Python的执行效率的技巧分享

    2021-01-07 09:52:45
  • Pandas数据分析之批量拆分/合并Excel

    2023-03-28 19:39:58
  • Mysql查询时间区间日期列表实例代码

    2024-01-17 16:17:32
  • 兼容PHP5的PHP目录管理函数库

    2024-06-07 15:50:41
  • 利用python Selenium实现自动登陆京东签到领金币功能

    2021-11-09 12:00:33
  • python3.6 如何将list存入txt后再读出list的方法

    2022-03-03 07:30:26
  • python深度学习tensorflow卷积层示例教程

    2021-04-02 22:59:13
  • 在自动化中用python实现键盘操作的方法详解

    2021-02-04 00:23:48
  • asp之家 网络编程 m.aspxhome.com