CodeWars : 新手村练等纪录01- Isograms

Isogram

等级:7kyu

原始题目isogram的解释

An isogram is a word that has no repeating letters, consecutive or non-consecutive. Implement a function that determines whether a string that contains only letters is an isogram. Assume the empty string is an isogram. Ignore letter case.

中翻:字串中一个字母只出现一次(不分大小写),若符合条件则回传true(空字串也视为Isogram)。

isIsogram "Dermatoglyphics" == trueisIsogram "aba" == falseisIsogram "moOse" == false -- ignore letter case

自解:

export function isIsogram(str: string){  let lowerCaseStr = str.toLowerCase();   let arr = lowerCaseStr.split("");  let setArrNumber = new Set(arr).size  if(setArrNumber !== arr.length){    return false  }  else{    return true  }}

好像有点冗长,后来查到一位的写法比我精简许多(查看下方),但想法是相同的。
概念是:

先将字串全部转成lowerCase将字串的每个字母拆解去比对字母是否有重複,透过new Set()可以让所有的值都是唯一的,若有值重複则会被忽略,
所以去比较Set完后的元素数量(透过set.prototype.size)是否和原本拆解的字母阵列数量相同,
若不同则代表有重複字母,回传false,反之则回传true

他解1:

author: fullstackdevguy

export function isIsogram(str: string){  //resolve str to lowercase first  str = str.toLowerCase();  //transform string to a Set to remove duplicates and   //compare the size of the set to the length of the str  return new Set(str.split('')).size === str.length;}

他解2:

author: stellartux

export function isIsogram (str: string): boolean {  return (new Set(str.toLowerCase())).size === str.length}

超级精简的code~~ 十分佩服

此次题目使用到的方法和参考网址:

array.split()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

String.prototype.toLowerCase()
https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Reference/Global_Objects/String/toLowerCase

Set.prototype.size
https://www.fooish.com/javascript/ES6/Set-and-WeakSet.html
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set/size


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章