【问题标题】:Convert string letters to different ones in JS在JS中将字符串字母转换为不同的字母
【发布时间】:2021-08-12 15:53:31
【问题描述】:

我有一个我想不通的简单 JS 任务,毕竟对我来说不是那么简单。

创建一个函数'converter',以这种方式转换字母:

T -> C
C -> T
A -> D
X -> Y

函数接受带有字母的字符串。应从字符串中删除所有不可转换的字母。

例子:

 - converter('TTCCAAXX') -> 'CCTTDDYY'
 - converter('TTGG') -> 'CC'

我尝试过这样的事情-

function Converter(str) {
let upperStr = str.toUpperCase()
let newStr = upperStr.replaceAll("T", "C").replaceAll("C", "T")
console.log(newStr)
}

Converter("TTCCAAXX")

但这是替换所有字符并覆盖它们,我没有得到正确的结果。

【问题讨论】:

  • codewars 的全部意义在于您使用自己的大脑,而不是其他人为您解决它...如果您无法弄清楚,请跳过并转到下一个任务,除非当然你唯一关心的是排名和炫耀..
  • 我不知道你在说什么,我把这个任务作为 JS 课的作业分配给了我。
  • 哦,哈哈,好吧,显然你的老师使用代码战来获得“灵感”......所以人们会给你答案,但要修正你的方法,你需要将左边的字母替换为其他字母不匹配右侧的字母(我们称它们为“新”字母),接下来将右侧的所有字母替换为左侧的相应字母,最后将第一步中的“新”字母替换为右侧的相应字母。即 T > M; C > T; M > C

标签: javascript replace replaceall


【解决方案1】:

您需要使用更高效的顺序for 循环(只需一次迭代)并解决覆盖问题。

为了更好的灵活性,我们可以将字符对存储在一个对象中。

const convertKeyValue = {
  'T': 'C',
  'C': 'T',
  'A': 'D',
  'X': 'Y'
}

function Converter(str) {
  let upperStr = str.toUpperCase()
  var newStr = ''
  for(let i = 0; i < upperStr.length; i++){
    const current = upperStr.charAt(i);
    newStr += convertKeyValue[current] ? convertKeyValue[current] : '';
  }
  return newStr;
}

console.log(Converter('TTCCAAXX'));
console.log(Converter('TTGG'));

【讨论】:

  • 哇,真快。谢谢好心的先生!
【解决方案2】:

除了新的映射之外,考虑添加一个布尔值/计数器来表示状态。这样您就不会获得经常性或周期性的转化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2021-10-12
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多