每日一道算法題 - LetterChanges(easy-4)

雖然都是很簡單的算法,每一個都只需5分鐘左右,但寫起來總會遇到不一樣的小問題,但願你們能跟我一塊兒天天進步一點點。
更多的小算法練習,能夠查看個人文章。javascript

規則

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. java

使用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)之間api

方法2:使用正則去匹配,特殊狀況如"z"和"Z",返回對應的值函數

知識點

  1. charCodeAt(),獲取字符串的ASCII碼
  2. String.fromCharCode(), 把ASCII碼轉換成字符串
相關文章
相關標籤/搜索