JavaScript输出一个字符串中出现次数最多的字符

一、利用普通方式实现

	//JavaScript输出一个字符串中出现次数最多的字符
	function strMax(str) {
		var obj = {};			//保存每个字符出现的次数( key:字符,value:出现的次数 )
		var returnValue = {};	//返回值:最大字符和出现次数
		var values = [];		//保存每个字符出现的次数
		if (typeof str !== 'string') {	//如果传入的参数不是字符串,返回"";
			return "";
		}
		for (var i = 0; i < str.length; i++) {	//循环每个字符串里的每个字符
			var value = str[i];		
			if (!obj[value]) {				//如果当前obj对象里没有这个字符属性
				obj[value] = 1;				//添加这个属性,并为这个属性赋值为1
			} else {
				obj[value]++;				//如果当前obj对象里存在这个字符属性,则value值+1
			}
		}
	
		for (var item in obj) {			//遍历添加字符属性后的对象属性
			values.push(obj[item]);		//把字符出现的字数加入数组
		}
		values.sort(function(value1, value2) {		//从大到小排序数组
			if (value1 < value2) {
				return 1;
			} else if (value1 > value2) {
				return -1;
			} else {
				return 0;
			}
		});
	
		var maxNum = values[0];		//获取数组第一个value值 如:5
		for (var item in obj) {		//重新遍历对象属性
			if (obj[item] === maxNum) {	//如果对象属性的值等于maxNum
				var maxValue = item;	//获取属性赋值给maxValue
			}
		}
	
		if (!returnValue[maxValue]) {	//如果returnValue对象没有maxValue属性
			returnValue[maxValue] = maxNum;	//则添加,并赋值maxNum。
		}	
		return returnValue;		//返回returnValue对象
	};

这个JavaScript函数没有做到如果出现的次数相同的字符,就全部输出。只实现了单个输出。

 

二、利用正则表达式来实现

	//使用正则表达式判断
	function strMax1( str ){
		
		
		var maxShow = {count:0,value:""};		//保存最大字符出现的次数( key:字符,value:出现的次数 )
		
		var regs,tempStr,tempCount;		//正则匹配,临时最大字符,临时最大字符出现次数
		
		for (var i = 0;i<str.length;i++) {
			regs = new RegExp(str[i],"g");
			//使用正则表达式匹配返回结果的个数
			tempStr = str.match(regs);
			if ( tempStr ){	//如果有数据
				tempCount = tempStr.length;		//获取最大字符出现次数
				if( tempCount > maxShow.count  ){  //如果当前获取的字符串长度大于已经保存的字符串长度,则替换。
					maxShow.count = tempCount;   
					maxShow.value = str[i];
				}
				
			}
		}
		
		return maxShow;
		
	};

 

转载于:https://my.oschina.net/tianshuo/blog/739439

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值