资讯专栏INFORMATION COLUMN

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

mo0n1andin / 3442人阅读

摘要:更多的小算法练习,可以查看我的文章。规则使用语言,使用函数获取传递的参数并使用以下算法对其进行修改。将字符串中的每个字母替换为字母表后面的字母即变为,变为。然后将这个新字符串,,,,中的每个元音大写,并最终返回此修改后的字符串。

虽然都是很简单的算法,每个都只需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= 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码转换成字符串

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/96036.html

相关文章

  • 每日一道算法 - 反转字符串(easy-3)

    摘要:规则使用语言,让函数获取传递的参数,并以相反的顺序返回字符串。测试用例思路方法通过把字符串转换成数组,并使用数组的反转数组,然后使用重新拼接成字符串方法向后循环字符串或字符数组以生成新字符串 虽然都是很简单的算法,每个都只需5分钟左右,但写起来总会遇到不同的小问题,希望大家能跟我一起每天进步一点点。更多的小算法练习,可以查看我的文章。 规则 Using the JavaScript l...

    xfee 评论0 收藏0
  • 每日一道算法 - LongestWord(easy-1)

    摘要:规则使用语言,让函数获取传递的参数并返回字符串中的最大单词。忽略字符串中标点符号并假设不会为空。测试用例思路通过过滤字符串,并把字符串根据空格符转换成字符串数组通过循环把获取字符串数组中的长度最长的字符串 虽然都是很简单的算法,每个都只需5分钟左右,但写起来总会遇到不同的小问题,希望大家能跟我一起每天进步一点点。更多的小算法练习,可以查看我的文章。 规则 Using the JavaS...

    plokmju88 评论0 收藏0
  • 每日一道算法

    摘要:遇到的坑刚拿到这道题就直接做了这样的判断,可是万一是这个判断就是错误的了。思路二上述算法遍历了两次链表,还额外申请了一个数组空间,效率不高,不如直接就地反转链表,更改每个节点自身的指针。 2018.10.14 来源:剑指offer 题目:反转链表 输入一个链表,反转链表后,输出新链表的表头。思路一:把所有链表内容都输入到一个数组,再次遍历链表,得到数组反转后的值,最后输出原来的head...

    The question 评论0 收藏0
  • 每日一道算法--二维数组中的查找--python

    摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...

    番茄西红柿 评论0 收藏0
  • 每日一道算法--二维数组中的查找--python

    摘要:题目描述代码思路思路一按行执行二分查找,只要该行的第一个元素小于目标,就对该行二分查找。思路二从数组的左下角开始查找,如果当前值小于目标,就向右,即如果当前值大于目标,就向上,即。【题目描述】 showImg(https://user-gold-cdn.xitu.io/2019/5/22/16addf094e0320ca); 【代码思路】 思路一:按行执行二分查找,只要该行的第一个元素小于目...

    luck 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<