804. 唯一摩尔斯密码词
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如:
-
'a'
对应".-"
, -
'b'
对应"-..."
, -
'c'
对应"-.-."
,以此类推。
为了方便,所有 26
个英文字母的摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给你一个字符串数组 words
,每个单词可以写成每个字母对应摩尔斯密码的组合。
-
例如,
"cab"
可以写成"-.-..--..."
,(即"-.-."
+".-"
+"-..."
字符串的结合)。我们将这样一个连接过程称作 单词翻译 。
对 words
中所有单词进行单词翻译,返回不同 单词翻译 的数量。
示例 1:
输入: words = ["gin", "zen", "gig", "msg"] 输出: 2 解释: 各单词翻译如下: "gin" -> "--...-." "zen" -> "--...-." "gig" -> "--...--." "msg" -> "--...--." 共有 2 种不同翻译, "--...-." 和 "--...--.".
示例 2:
输入:words = ["a"] 输出:1
提示:
-
1 <= words.length <= 100
-
1 <= words[i].length <= 12
-
words[i]
由小写英文字母组成
思路
把Word里面的字符串,解析成摩尔斯密码,然后放在一个数组里面,去重,返回新数组的长度。
代码
/**
* @param {string[]} words
* @return {number}
*/
var uniqueMorseRepresentations = function(words) {
ms = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
var msWord = []
//把words转化成摩尔斯密码
for (let i = 0; i < words.length; i++) {
var word = ''
for (let j = 0; j < words[i].length; j++) {
word += ms[words[i][j].charCodeAt(0) - 97]
}
msWord.push(word)
// console.log(msWord)
}
for (let i = 0; i < msWord.length; i++) {
for (let j = 0; j < msWord.length; j++) {
//判断是否相等
if(msWord[i] === msWord[j] && i != j){
//splice这里的意思是从下标为j开始,删除一位数
msWord.splice(j,1)
// console.log(i+msWord)
// console.log(j)
j--
}
}
// j = 0
}
// console.log(msWord)
return msWord.length
};
//测试
var n = uniqueMorseRepresentations(["rwjje","aittjje","auyyn","lqtktn","lmjwn"])
console.log(n)
方法
js
字符串对比之localeCompare()
方法(没用上)
js
提供了字符串的对比方法localeCompare()
,该方法返回的是一个数字用来表示一个参考字符串和对比字符串是排序在前,在后或者相同。该方法基本不单独使用,大部分时间是配合字符串排序使用的。
一、语法:
string.localeCompare(targetString,locales,options);
二、参数
targetString
:对比字符串
locales
:看MDN上的解释是用来表示一种或多种语言或区域的一个符合 BCP 47 标准的字符串或一个字符串数组,我个人的理解是,指定一系列字符的顺序,提供给对比字符串的对比顺序,就好比我们通过26个字母的顺序就知道a,c的排序的顺序。
options
:是单个活对象组成的多个参数,主要的可以到MDN去查
三、返回值:返回值是一个数字,目前的主流浏览器都返回的是1、0、-1三个值,但是也有其他情况,所以不可以用绝对的值等于1、-1这种去判断返回的结果
返回值大于0:说明当前字符串string大于对比字符串
targetString
返回值小于0:说明当前字符串string小于对比字符串
targetString
返回值等于0:说明当前字符串string等于对比字符串
targetString
四、方法的调用
1、方法的单独调用:就是简单的去对比两个字符串,查看其返回值就好。
var str = 'aaa',
strCom = 'bbb',
strCom2 = 'aaa';
str.localeCompare(strCom); //-1
strCom.localeCompare(str); //1
str.localeCompare(strCom2); //0
2、配合排序的调用:该方法用来单独比较字符串的情况比较少,大多数情况下是配合字符串的排序下使用的。
var strList = ['cc', 'ee', 'ca', 'aa'];
strList.sort((a, b) => {
return a.localeCompare(b);
});
console.log(strList); //["aa", "ca", "cc", "ee"]
———————————————— 版权声明:本文为CSDN博主「愚舜」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:js字符串对比之localeCompare()方法_愚舜的博客-CSDN博客_localecompare
26个字母大写及小写分别对应的ASCII码值
今天突然用到了26个字母大小写的ASCII码值,查到后记录下来,以便后便用到你是方便查询
小写: a → 97,b → 98,c → 99,d → 100,e → 101,f → 102, g → 103,h → 104,i → 105,j → 106,k → 107,l → 108, m → 109,n → 110,o → 111,p→ 112,q → 113,r → 114, s → 115,t → 116,u → 117,v → 118,w → 119,x → 120,y → 121,z → 122
大写: A → 65,B → 66,C → 67,D → 68,E → 69, F → 70,G → 71,H → 72,I → 73,J → 74, K → 75,L → 76,M → 77,N → 78,O → 79, P → 80,Q → 81,R → 82,S → 83,T → 84, U → 85,V → 86,W → 87,X → 88,Y → 89,Z → 90
———————————————— 版权声明:本文为CSDN博主「冷de猫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:26个字母大写及小写分别对应的ASCII码值_冷de猫的博客-CSDN博客_大小写ascii
js字母和数字的相互转换
与ASCALL码对应
1.字母转换成数字
.charCodeAt(0)
let letter = 'B';
console.log(letter.charCodeAt(0));//66
2.数字转成成字母
String.fromCharCode()
let num = 65;
console.log(String.fromCharCode(num));//A
———————————————— 版权声明:本文为CSDN博主「林小白的日常」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:js字母和数字的相互转换_林小白的日常的博客-CSDN博客_js字母转数字
splice
splice()
方法通过删除或替换现有元素或者原地添加新的元素来修改数组,并以数组形式返回被修改的内容。此方法会改变原数组
。第一个参数表示要删除的位置(从0计数),第二个参数表示要移除的数组元素的个数