获取在一个数组中出现最多的字符及其所在的位置

获取在一个数组中出现最多的字符、个数及其所在的位置

<!DOCTYPE html>
<html>
<head>
	<title>一个数组中,出现次数最多的字符,及其位置</title>
</head>
<body>
     <script type="text/javascript">
     	var arr=["a","x","b","d","m","a","k","m","p","j","a"];
     	var str="what are you";  

     	//找出出现次数最多的字符。及其次数
     	function unique(str){
     		var obj={}; //存储出现的次数
     		var objIndex=[];
     		for(var i=0;i<str.length;i++){
     			var key=str[i];
     			if(obj[key]){ //判断这个键值对中有没有这个值
                   obj[key]++;
     			}else{
     				obj[key]=1;
     			}
     		}

     		//找出出现最多的次数的字符
     		var maxCount=0;
     		var maxString="";
     		for(var key in obj){
               if(maxCount<obj[key]){
                  maxCount=obj[key];
                  maxString=key;
               }
     		}
     		return "该字符"+maxString+"出现了"+maxCount+"次;";
     	}
     	unique(str);
     	console.log(unique(arr));  

     	//找出出现次数最多的字符,及其位置
     	function getMaxAndIndex(arr){
			//var arr=str.split(‘‘)
			//console.log(arr)
	        var obj = {};
	        arr.forEach(function(item,index){
	            if(!obj[item]){
	                obj[item]= {indexs: [index]}
	            }else{
	                obj[item][‘indexs‘].push(index);
	            }
	        });
	        var num=0;//记录出现次数最大值
	        var str1=‘‘;//记录出现次数最多的字符
	        var reArr;//返回最大值的位置数组
	        for(var attr in obj){
	            var temp=obj[attr][‘indexs‘];
	            if(temp.length>num){
	                num=temp.length;
	                str1=attr;
	                reArr=temp;
	            }
	        }
	        return {
	            maxStr:str1,
	            indexs:reArr
	        }
	    }
     	var result=getMaxAndIndex(arr);
     	console.log(result);
     </script>
</body>
</html>

  

时间: 2024-10-22 22:14:27

获取在一个数组中出现最多的字符及其所在的位置的相关文章

数组去重及排序/0~10随机数字/字符串中出现最多的字符及次数

数组去重及排序: var arr = [1,5,1,2,6,8,1,81,9,0]; for(var i=0;i<arr.length;i++){ for(var j=i+1;j<arr.length;j++){ if(arr[i] == arr[j]){ arr.splice(j,1); j--; } } } arr.sort(function(a,b){ return a-b; // 从小到大排序 }) alert(arr); // 0,1,2,5,6,8,9,81 arr.sort(fu

vuex中filter的使用 &amp;&amp; 快速判断一个数是否在一个数组中

vue中filter的使用 computed: mapState({ items: state => state.items.filter(function (value, index, arr) { return index < 5 }) }), 如上所示,对于vuex,我们在使用mapState获取state时, 可以使用filter来过滤其中的元素,在filter的回调函数中接受三个参数,第一个是value,即每一个元素的值: 第二个是index, 即每一个元素所在的index, 第三个

获取JS数组中的相同元素的名称和数量

Js代码   <script> var ary =["aaa","露露","bbb","aaa","ccc","ccc","aaa","露露","haha"]; var res = []; ary.sort(); for(var i = 0;i<ary.length;) { var count = 0; for

在一个数组中除两个数字只出现1次外,其它数字都出现了2次

前面总结了leecode上,改为成3出现,只有1个出现1次,的是通过记录每个位的个数来实现的如果count%3=1则为1,否则为0,实现起来充分利用了位运算. 编程之美上的,没有写过,今天写一下. http://blog.csdn.net/morewindows/article/details/8214003这个博客是MVP的博客,我自己也写一遍,其实核心就是 两个数的异或为1,只有1,0疑惑才为1,所以分离这两个数到不同的区间.对如何寻找1的位置做了优化(x&-x) #include<io

4-7 在一个数组中实现两个堆栈

本题要求在一个数组中实现两个堆栈. 函数接口定义: Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, int Tag ); 其中Tag是堆栈编号,取1或2:MaxSize堆栈数组的规模:Stack结构定义如下: typedef int Position; struct SNode { ElementType *Data; Positio

每日一题16:在一个数组中实现两个栈

在一个数组中实现两个栈,当数组未填满是任一个栈不能溢出.解法是将一个栈从头开始往后插入,而另一个从后往前插入,如果插入一个元素后,两个栈的top指针未相遇,则表示数组未满,栈没有溢出. #include "stdafx.h" #include <iostream> using namespace std; struct special_stack { int capcity; int ltop,rtop; int* vals; }; special_stack* creat

6-7 在一个数组中实现两个堆栈

6-7 在一个数组中实现两个堆栈(20 分) 本题要求在一个数组中实现两个堆栈. 函数接口定义: Stack CreateStack( int MaxSize ); bool Push( Stack S, ElementType X, int Tag ); ElementType Pop( Stack S, int Tag ); 其中Tag是堆栈编号,取1或2:MaxSize堆栈数组的规模:Stack结构定义如下: typedef int Position; struct SNode { Ele

C#获取一个数组中的最大值、最小值、平均值

C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 1 int[] array = new int[] { 1,2,4,3,0,-1,34,545,2,34}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大值.平均值 1 Console.WriteLine("--------------Array自身方法-----------------"); 2 Console.WriteLine("Min:{0

定义一个由整数组成的数组,然后输入一个整数X,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j

//定义一个由整数组成的数组,然后输入一个整数x,如果X不在此数组中,返回小于X的最大数的位置i和大于X的最小数的位置j: //若X在此数组中,则返回数组中这个数的位置. 源代码: #include<iostream> using namespace std; void main() { int array[]={1,2,3,4,5,6,7,89,45,32,56,78,12,43,90,19};//16个数字 int x; int max=array[0]; int min=array[0]