虽然都是很简单的算法,每一个都只需5分钟摆布,但写起来总会碰到差别的小问题,愿望大家能跟我一同天天提高一点点。
更多的小算法演习,能够检察我的文章。
划定规矩
Using the JavaScript language, have the function LetterChanges(str)
take the str parameter being passed and modify it using the following algorithm. Replace every letter in the string with the letter following it in the alphabet (ie. c becomes d, z becomes a). Then capitalize every vowel in this new string (a, e, i, o, u) and finally return this modified string.
运用JavaScript言语,运用函数LetterChanges(str)
猎取通报的str参数并运用以下算法对其举行修正。
将字符串中的每一个字母替换为字母表背面的字母(即 c变成d,z变成a)。
然后将这个新字符串(a,e,i,o,u)中的每一个元音大写,并终究返回此修正后的字符串。
测试用例
Input:"hello*3"
Output:"Ifmmp*3"
Input:"fun times!"
Output:"gvO Ujnft!"
Input:"I love Code Z!"
Output:"J mpwf DpEf A!"
my code
function LetterChanges(str) {
var strArr = ['a', 'e', 'i', 'o', 'u']
var newStr = ''
for(var i=0;i<str.length;i++) {
var asciiCode = str[i].charCodeAt(0)
var tempStr = str[i]
if (asciiCode <= 122 && asciiCode >= 97) {
asciiCode = asciiCode === 122 ? 97 : asciiCode + 1
tempStr = String.fromCharCode(asciiCode)
}else if(asciiCode <= 90 && asciiCode >= 65) {
asciiCode = asciiCode === 90 ? 65 : asciiCode + 1
tempStr = String.fromCharCode(asciiCode)
}
if(strArr.indexOf(tempStr) !== -1) {
tempStr = tempStr.toUpperCase()
}
newStr += tempStr
}
return newStr;
}
other code
function LetterChanges(str) {
str = str.replace(/[a-zA-Z]/g, function(ch) {
if (ch === 'z') return 'a';
else if (ch === 'Z') return 'A';
else return String.fromCharCode(ch.charCodeAt(0) + 1);
});
return str.replace(/[aeiou]/g, function(ch) {
return ch.toUpperCase();
});
}
思绪
要领1: 运用ASCII码去推断,a-z(97,122)之间;A-Z(65,90)之间
要领2:运用正则去婚配,特殊情况如”z”和”Z”,返回对应的值
知识点
-
charCodeAt()
,猎取字符串的ASCII码 -
String.fromCharCode()
, 把ASCII码转换成字符串