前端学习笔记之二——找出重复最多的字符

利用工作的间隙, 昨天做了论坛里的第二个题目,边思考边查询,温习了很多知识,还学习了很多优秀同学提交的作业,有两个同学的作业印象最深。

题目如下:

印象最深的两个作业,要看懂还真是花了一番功夫的,不过也学到了挺多。

第一个同学提交的作业,亮点在于灵活运用了split、join属性,简直太聪明了。我比较喜欢在理解了别人的代码之后,再一个字一个字敲下来,这样也顺便加深我的理解和记忆。第一个同学的作业,我的温顾如下:

<script>
    var str = "aabbddeeeeefdxxxd";
    function maxCharOf(){
        var strClone=str,num=0,char="",arr,length;
        while(strClone.lenth>0){
            arr=strClone.split(strClone[0]);
            length=arr.length-1;
            if(length>num){
                num=length;
                char=strClone[0];
            }else if(length==num){
                char+="&"+strClone[0];
            }
        strClone=arr.join("");
       }
        console.log("重复个数最多的字符是"+char+",个数为"+num);
    }
    maxCharOf(str);
</script>

------------------------------------------------------------------

还有一位同学的作用使用了正则以及replace()方法,做得也挺不错的。

<script>

var str = "aabbddeeeeefdxxxd";

var arr=str.split("");

str=arr.sort().join("");

var value="";

var index=0;

var reg=/(/w)/1+/g;

str.replace(reg,function($0,$1){

if($0.length>index){

index=$0.length;

value=$1;

}

})

console.log(""重复个数最多的字符是"+value+",个数为"+index");

</script>

------------------------------------------------------------------------

通过琢磨研究两位同学提交的作业,温习了许多旧知识,像字符串和数组间转换的split()、join()方法,还有数字的排序sort()方法。另外还有正则表达式,replace()方法等等,比较深刻的就小结一下:

1.正则表达式:/g表示全局匹配,/i表示忽略大小写匹配,/s表示匹配空格,/d表示匹配数字,/n表示匹配换行符等,[]表示匹配中括号内任意一个,()指的是一个匹配子项,若干子项交集才是最终匹配项。

运用正则进行验证的方法有:

reg.test(str);----返回true或者false;

str.search(reg);-----返回第一个匹配的字母的下标位置或者-1;

str.match(reg);-----返回匹配的内容或者null;如果reg不加/g,那么返回匹配结果及每个子项的集合。

另外还有,查找替换的方法。str.replace(resouce,replacement);----第一个参数可以是字符串或者正则表达式,第二个参数可以是字符串、函数或者特殊字符如$1等等。 用第二个参数替换第一个参数。

2. replace()方法的第一个参数可以是一个正则表达式,第二个参数还可以是一个函数,也可以是像$0、$1、$2、$3……这样的特殊字符,这些特殊字符有着特殊的意义。

$0,指的是匹配成功后的整体结果(如果正则中含/g,那就是这次全局匹配完成之后的整体结果,字符串的形式)。

$1,匹配成功的第一个子项分组(所谓子项,指的正则表达式中其中一个匹配条件)。

$2,匹配成功的第二个子项分组

$3,依次类推,一直到$n。

时间: 2024-10-12 08:41:18

前端学习笔记之二——找出重复最多的字符的相关文章

【学】从一个数组中找出重复最多的元素,并统计重复个数

通过json,将数组中的值都传给json中的键,利用json中的键是不能重复的性能,同时如果遇到重复的键,那就让这个键的值自增1,这样就能统计出重复次数 上面的方法可以得出一个json,但是还不够,因为无法比较json里的键或者值的大小,就要再将Json里的每组数据组成一个个小的json装到一个数组中,将统计的数量赋给每个json中的值,利用数组的sort的比较函数进行排序即可 function myMaxElement(arr){ var json = {}; for (var i=0; i<

Yii框架学习笔记(二)将html前端模板整合到框架中

选择Yii 2.0版本框架的7个理由 http://blog.chedushi.com/archives/8988 刚接触Yii谈一下对Yii框架的看法和感受 http://bbs.csdn.net/topics/390807796 更多内容 百度:yii 前端 http://my.oschina.net/u/1472492/blog/221085 摘要 Yii框架学习笔记(二)将html前端模板整合到框架中 原文地址:http://www.ldsun.com/1309.html 上一节成功将Y

面试题3(二):不修改数组找出重复的数字

// 面试题3(二):不修改数组找出重复的数字// 题目:在一个长度为n+1的数组里的所有数字都在1到n的范围内,所以数组中至// 少有一个数字是重复的.请找出数组中任意一个重复的数字,但不能修改输入的// 数组.例如,如果输入长度为8的数组{2, 3, 5, 4, 3, 2, 6, 7},那么对应的// 输出是重复的数字2或者3. 解题思路: 不能修改数组,可以创建一个长度为n+1的辅助数组,空间复杂度为O(n). 如果用时间换空间的话,可以使用二分查找的思想. 元素范围为1~n,但是有n+1

Django学习笔记(二)—— 模板

疯狂的暑假学习之 Django学习笔记(二)-- 模板 参考: <The Django Book> 第四章 一.模板基础知识 1.模板是如何工作的 用 python manage.py shell 启动交互界面(因为manage.py 保存了Django的配置,如果直接python启动交互界面运行下面代码会出错) 输入下面代码 >>> from django import template >>> t = template.Template('My name

《Effective C++》学习笔记(二)

原创文章,转载请注明出处:http://blog.csdn.net/sfh366958228/article/details/38706483 闲谈 这两天都是先在地铁里看了会<Effective C++>,然后再回公司继续看,起先是因为地铁里太多无聊,手机也没信号,可看着看着发现里面的内容越来越"接地气",开始有点无法自拔起来. 今天依旧是翻阅着找自己感兴趣的开始看,先是回到条款02,接下来把设计与声明给看完了,来看看今天的收获把. 条款02:尽量以const,enum,

WEB前端学习笔记 一

最近时间比较充裕,整理了一下学习过的笔记,此篇笔记包含了:Html.Css.JavaScript.Jquery.以及使用帝国CMS或是织梦CMS建立自己的网站,也许也会整理一下PHP的笔记,如果时间允许会整理完全. 虽然笔记是从最基础的开始,但是,并不包含电脑的基础知识,所以你必须已经掌握了一些电脑的基本操作,比如开关机,你的电脑用的是什么操作系统,至少也要会用word和wps吧.浏览器是做什么的,什么拷贝.复制.粘贴.知道最基本的文件类型,如,文本文件,视频文件,图片文件,什么是可执行文件,分

《数据结构与算法分析》学习笔记(二)——算法分析

一.对算法分析方法的最简单的理解和使用方法 1.首先大家可能一般会被那些数学的概念搞晕,其实简单理解下来,就是假设任何语句执行的效率都是一样的,所以设定每一个语句的执行时间都是一个时间单位,那么只要计算这个程序到底执行了多少语句,就可以算出其时间复杂度. 2.其次就是我们要明白,我们是个估算,所以可以进行化简,明显我们可以忽略那些相对来说低阶的项,只分洗最高阶项.然后主要就是有这些常见的法则: (1)FOR循环 一次for循环的运行时间至多是该for循环内语句的运行时间乘以迭代次数. (2)嵌套

【Java学习笔记之二十六】深入理解Java匿名内部类

在[Java学习笔记之二十五]初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客.在这篇博客中你可以了解到匿名内部类的使用.匿名内部类要注意的事项.如何初始化匿名内部类.匿名内部类使用的形参为何要为final. 一.使用匿名内部类内部类 匿名内部类由于没有名字,所以它的创建方式有点儿奇怪.创建格式如下: new 父类构造器(参数列表)|实现接口() { //匿名内部类的类体部分 } 在这里我们看到使用匿名内部类我们必须要继承一个父类或者

.NET Remoting学习笔记(二)激活方式

目录 .NET Remoting学习笔记(一)概念 .NET Remoting学习笔记(二)激活方式 参考:百度百科  ♂风车车.Net 激活方式概念 在访问远程类型的一个对象实例之前,必须通过一个名为Activation的进程创建它并进行初始化.这种客户端通过通道来创建远程对象,称为对象的激活. 激活分为两大类:服务器端激活  客户端激活 服务器端激活 又称WellKnow(知名对象) 服务器应用程序在激活对象实例之前会在一个众所周知的统一资源标识符(URI)上来发布这个类型.然后该服务器进程