几个小编程题(数组去重,获取字符串中最多字符)

1、编写一个方法去掉一个数组的重复元素:

方法一:普通for循环嵌套;

 1 function removeSame(arr){
 2         console.log(arr);
 3         for(var i=0, len = arr.length; i<len; i++){
 4             for(var j=i+1; j<len-i; j++){
 5                 if(arr[i] === arr[j]){
 6                     arr.splice(arr[j], 1);  //如果检测到有重复的元素则删除
 7                     j--;    //当有多个重复元素时向前移一个索引防止遗漏某些元素
 8                 }
 9             }
10         }
11         console.log(arr);
12         return arr;
13     }
14
15     var arr = [1,2,3,3,3,3,3,4,4];
16     removeSame(arr);

方法二:利用for...in去重;

 1 function  removeSame(arr){
 2             var obj = {};
 3             var newArr = [];
 4             var key;
 5
 6             for(var i=0; i<arr.length; i++){
 7                 key = arr[i];
 8                 if(obj[key]){
 9                     obj[key] = 0;  //若未添加进对象,则给其赋值为0;
10                 }else{
11                     obj[key] = 0;  //若添加进对象过(即出现重复元素),则将其覆盖原属性,保证数组中只有唯一一个属性名;
12                 };
13             };
14
15             for(key in obj){
16                 newArr.push(key);  //将去重后的对象中的属性添加至新数组
17             };
18
19             console.log(newArr);
20 }

方法三:利用indexOf()(indexOf可以返回元素在数组中的索引位置);

1 function onlyone(arr){
2         var arr1=[];     //用于保存已去重元素的数组
3         for(var i=0;i<arr.length;i++){
4             if(arr1.indexOf(arr[i])==-1){//arr的第i个元素是否已经保存进arr1,若保存过,跳过(即重复的元素不进数组);否则把当前项push到数组里面
5                 arr1.push(arr[i]);
6             }
7         }
8         return arr1;
9 }

2. 判断一个字符串中出现次数最多的字符,并统计次数:

 1 function getMaxLetter(){
 2     var obj={};            //保存拆分了的字符和出现次数
 3
 4     for(var i=0, l=str.length, k; i<l; i++){
 5         k = str.charAt(i);        //将字符串中的各字符提取出来
 6         if(obj[k]){
 7             obj[k]++;            //字符的索引作为对象的值,若已出现过则进行++
 8         }else{
 9             obj[k] = 1;            //若对象中无此元素则赋值1,说明出现1次
10         }
11     }
12     console.log(obj);
13
14     var m = 0;                    //出现最多的次数
15     var myArr = [];        //用于保存字符串中出现相同数量的最多字符
16
17     for(var k in obj){            //for in遍历对象中的属性值(即各字符)
18         if( obj[k] >= m ){        //若有比最大值还大的,则重新赋值
19             if( obj[k] > m ){
20                 myArr = [];
21             }
22             myArr.push(k);        //若相等,则将相同的字符存入数组
23             m = obj[k];            //获取次数
24         }
25     }
26     console.log(‘出现次数最多的字符是:‘ + myArr + ‘ ,出现的次数:‘ + m);
27 }
28
29 var str = "hello worlllllddddddd";
30 getMaxLetter(str);
时间: 2024-11-23 05:38:37

几个小编程题(数组去重,获取字符串中最多字符)的相关文章

数组去重,字符串查找最多字符方法总结

去重方法1:sort-splice 1 <script> 2 var arr=[1,2,3,4,4,4,4,4,3,2,2,3,4,4]; 3 arr.sort(function(n1,n2){ 4 return n1-n2; 5 }); 6 for(var i=0;i<arr.length;i++){ 7 if(arr[i]==arr[i+1]){ 8 arr.splice(i+1,1); 9 i--; 10 } 11 } 12 alert(arr); 13 </script&g

POJ C程序设计进阶 编程题#2:字符串中次数第2多的字母

编程题#2:字符串中次数第2多的字母 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一串长度不超过500个符号的字符串,输出在串中出现第2多的英语字母(大小写字母认为相同)和次数(如果串中有其它符号,则忽略不考虑).如果有多个字母的次数都是第2多,则按串中字母出现的顺序输出第1个. 例 ab&dcAab&c9defgb 这里,a 和 b都出现3次,c和d都出现2

c语言代码编程题汇总:把字符串中的内容逆置

字符串中的内容逆置  程序代码如下: 1 /* 2 2017年3月5日14:48:11 3 功能:把字符串的内容逆置 4 */ 5 6 #include"string.h" 7 #include "stdio.h" 8 #define N 81 9 void fun(char *s) 10 { 11 int i, n = strlen(s)-1; //strlen()是求字符串全部元素个数包括最后的'\0'(字符串结尾的字符),而strlen()-1表达式所求得是数

c语言代码编程题汇总:将字符串中的大写字母转换成小写字母

将字符串中的大写字母转换成小写字母 程序代码如下: 1 /* 2 2017年3月8日21:21:46 3 功能:将字符串中的大写字母转换成小写字母 4 */ 5 /* 6 #include"stdio.h" 7 8 int main() 9 { 10 int n = 0; 11 12 char a[100]; 13 14 printf("please input a string:"); 15 16 gets(a); 17 18 for(int i = 0 ;a[i

c语言代码编程题汇总 :统计字符串中的大写和小写字母的个数

统计字符串中的大写和小写字母的个数 程序代码如下: 1 /* 2 2017年3月6日19:42:21 3 功能:统计字符串中的大写和小写字母的个数 4 */ 5 6 #include "stdio.h" 7 void fun (char *,int *,int *); 8 9 int main (void) 10 { 11 int m = 0,n = 0; 12 int *Pm = &m, *Pn = &n; 13 char s[100]; 14 printf (&qu

如何获取字符串中相同字符出现的次数

任务: 1.统计字符数组中相同数据个数. 2.需要用set实现. 3.需要用iterator实现. 第一次出现时,我只是简单的在纸上写了点思路,事后发现除了一些具体属性可能因为不熟悉之外,大体还是成功的: 我将思路化为代码后实现如下: public static void main(String[] args) { String[] arrays=new String[]{"zhangsan","andi","andi","zhangs

获取字符串中重复字符的索引

list_all=[] oper_s="abcdaaaa" i_num=0 while(True): x=oper_s.find("a",i_num) print(x) if(not x==-1): i_num=x+1 list_all.append(x) else: break print(list_all) 原文地址:https://www.cnblogs.com/sea-stream/p/10493245.html

js数组去重,并统计最多项算法

从事了一段时间的前端开发,今天写了一个数组去重,并统计最多项的方法,目前只支持数组的项都是数字. 由于本人能力有限,希望能得到网友的指正!如有问题或者更好的实现思路,也欢迎大家和我讨论!代码如下: function getMax(arr){    var obj = {},        l = arr.length,        key = [],        val = [];    for(var i = 0;i<l;i++){        !obj[arr[i]] ? obj[ar

数组去重是面试中经常问到的问题

数组去重是面试中经常问到的问题 [html] view plain copy var arr=[1,3,4,52,4,5,4,8,7,6]; 第一种方法:使用ES5中的indexOf进行去重: [javascript] view plain copy function arr1(){ var n=[]; for(var i=0;i<arr.length;i++){ if(n.indexOf(arr[i])==-1){ n.push(arr[i]); } } return n; }//先定义一个空