codewars--js--counting duplicates
题目描述:
Count the number of Duplicates
Write a function that will return the count of distinct case-insensitive alphabetic characters and numeric digits that occur more than once in the input string. The input string can be assumed to contain only alphabets (both uppercase and lowercase) and numeric digits.
Example
"abcde" -> 0 # no characters repeats more than once
"aabbcde" -> 2 # 'a' and 'b'
"aabBcde" -> 2 # 'a' occurs twice and 'b' twice (
band
B)
"indivisibility" -> 1 # 'i' occurs six times
"Indivisibilities" -> 2 # 'i' occurs seven times and 's' occurs twice
"aA11" -> 2 # 'a' and '1'
"ABBA" -> 2 # 'A' and 'B' each occur twice
我的解答:
function duplicateCount(text){
//...
var flag=0;
var a=text.toLowerCase();
while(a.length>0){
var reg=a.substring(0,1); a=a.substring(1);
if(a.indexOf(reg)!=-1){
a=a.replace(new RegExp(reg,'g'),"");
flag+=1; }
}
return flag;
}
优秀回答:
function duplicateCount(text){
return (text.toLowerCase().split('').sort().join('').match(/([^])\1+/g) || []).length;
}
//若text=“Abccdeda”
//.toLowerCase() 将text全变成小写 “abccdeda”
//.split('') 以‘’规则分割 [‘a’, 'b','c','c','d','e','d','a']
//.sort() 排序 ['a','a','b','c','c','d','d','e']
//.join() 将数组中所有元素放在一起 'aabccdde'
//.match(/([^])\1+/g) 将符合正则的放在新数组中 ['aa','cc','dd']
/([^])\1+/g g表示全局,/... /表示正则内容,[^]排除,\1+至少出现一次,,,返回全局中重复出现的
//.length 求数组的长度
(2)
function duplicateCount(text){
return text.toLowerCase().split('').filter(function(val, i, arr){
return arr.indexOf(val) !== i && arr.lastIndexOf(val) === i;
}).length;
}
// 例子“abccdeda”
//filter(function(currentValue,index,arr){return xxx;}) 返回符合条件的数组
//currentValue,必选,当前元素的值;index,可选,当前元素的索引在;arr,可选,当前数组对象
// 返回数组为['c','d',‘a’]
本题遇到的问题:
1,string的方法和Array的方法搞混了。
String | Array | |
输出第一个/最后一个元素 |
substring(0,1); substr(-1); slice(-1); |
shift(); slice(0,1); pop(); |
替换 | replace(searchvalue,newvalue); | splice(index,howmany,item1,...,itemX); |
其他重要方法 |
concat(); match(); search(); split(); |
concat(); join(); reverse(); sort(); |
2, replace();
用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串.
var str="Mr Blue has a blue house and a blue car";
var n=str.replace(/blue/gi, "red");
正则表达式RegExp 重要以后补充学习内容
var patt=new RegExp(pattern,modifiers); 或更简单的方法 var patt=/pattern/modifiers;
例如:
a=a.replace(new RegExp(reg,'g'),"");
3,indexOf();
判断字符串中是否含有子字符串。等同于contains
if(str.indexOf("substr")!=-1)
codewars--js--counting duplicates的更多相关文章
- [CodeWars][JS]实现链式加法
在知乎上看到这样一个问题:http://www.zhihu.com/question/31805304; 简单地说就是实现这样一个add函数: add(x1)(x2)(x3)...(xn) == x1 ...
- [CodeWars][JS]实现大整数加法
问题描述 实现‘字符串加法’,即将两个以字符串形式表示的数字相加,得到结果然后返回一个新的字符串. 例如:输入‘123’,‘321’,返回‘444’. 这样在进行两个任意大的整数相加的时候,既不会溢出 ...
- [CodeWars][JS]如何判断给定的数字是否整数
问题描述: We are asking for a function to take a positive integer value, and return a list of all positi ...
- how to remove duplicates of an array by using js reduce function
how to remove duplicates of an array by using js reduce function ??? arr = ["a", ["b& ...
- codewars--js--vowels counting+js正则相关知识
问题描述: Return the number (count) of vowels in the given string. We will consider a, e, i, o, and u as ...
- 几个比较”有意思“的JS脚本
1.获取内网和公网真实IP地址(引用地址) <!DOCTYPE html> <html> <head> <meta http-equiv="Cont ...
- 全排列算法的JS实现
问题描述:给定一个字符串,输出该字符串所有排列的可能.如输入“abc”,输出“abc,acb,bca,bac,cab,cba”. 虽然原理很简单,然而我还是折腾了好一会才实现这个算法……这里主要记录的 ...
- ES6 will change the way you write JS code.
https://hacks.mozilla.org/2015/04/es6-in-depth-an-introduction/ Counting to 6 The previous editions ...
- javascript 手势缩放 旋转 拖动支持:hammer.js
原文: https://cdn.rawgit.com/hammerjs/hammer.js/master/tests/manual/visual.html /*! Hammer.JS - v2.0.4 ...
- codewars 随手记
1.ES6数组遍历语法糖=> 在C#Linq里曾经用过,因此也不是很陌生. var range = Array.apply(null, Array(x)).map((_, i) => ++ ...
随机推荐
- pywin32 获取 windows 的窗体内文本框的内容
用 spy++去确认找到了文本框的句柄了. 用函数 win32gui.SendMessage 获取不了文本框的文本内容,用 str 类型的参数接收获取的内容的话没有获取到东西,而用 PyBuffer ...
- HCNA网络技术学习指南
网络通信基础 网络与通信 OSI模型和TCP/IP模型 网络类型 传输介质及通信方式 2 VRP基础 VRP简介 VRP命令行 登录设备 基本配置 配置文件管理 通过Telnet登录设备 文件管理 基 ...
- Node.js 官方文档中文版
这目录也是醉了 . 列出跟没列出没两样
- 双指针,BFS与图论(一)
(一)双指针 1.日志统计 小明维护着一个程序员论坛.现在他收集了一份”点赞”日志,日志共有 N 行. 其中每一行的格式是: ts id 表示在 ts 时刻编号 id 的帖子收到一个”赞”. 现在小明 ...
- Client API Object Model - Grid Context(3.3)
Grids 网格,以表格的形式显示数据, 网格可以跨越整个form,也可以是form中的一项. 被称为子网格(subgrid). grid有两种, 一种是read-only grid, 另一种是edi ...
- maven项目pom.xml加载本地jar,自定义jar
将jar放到resource目录下面: pom添加配置 <!-- 加载IK自定义 依赖--> <dependency> <groupId>com.ik.up< ...
- ActiveMQ 快速入门教程系列 第一章 点对点消息实现
ActiveMQ 开发包下载及运行环境搭建 主页:http://activemq.apache.org/目前最新版本:5.11.1开发包及源码下载地址:http://activemq.apache.o ...
- python笔记13
今日内容 装饰器 推导式 模块[可选] 内容回顾 函数 参数 def (a1,a2):pass def (a1,a2=None):pass 默认参数推荐用不可变类型,慎用可变类型. def(*args ...
- 深入理解python(一)python语法总结:基础知识和对python中对象的理解
用python也用了两年了,趁这次疫情想好好整理下. 大概想法是先对python一些知识点进行总结,之后就是根据python内核源码来对python的实现方式进行学习,不会阅读整个源码,,,但是应该会 ...
- Linux 下tomcat 的重新启动
在 Linux 系统下,重启 Tomcat 如何使用命令操作? 1.首先,进入 Tomcat 的 bin 目录 cd /usr/local/tomcat/bin 2.使用Tomcat关闭命令 ./sh ...