【问题标题】:Reversing vowels in string in javaScript在javaScript中反转字符串中的元音
【发布时间】:2020-06-02 07:11:59
【问题描述】:

这是我在字符串中反转元音的代码。我找不到我在这方面犯了什么错误.. 例子: ip: 手机 操作:mebilo

但是.. 对我来说..无论我给出什么输入,它都只显示为输出。 我的错误是什么? 谢谢。

const readline = require('readline');
const inp = readline.createInterface({
  input: process.stdin
});
const userInput = [];
  inp.on("line", (data) => {
  userInput.push(data);
});
inp.on("close", () => {
  a= userInput[0];
  b=[];
  n=0;
  for(i=0; i<a.length; i++){
    if(a[i]=="a"||a[i]=="e"||a[i]=="i"||a[i]=="o"||a[i]=="u"){
      b[n]=a[i];
      n+=1;
    }
  }

  last = b.length-1;
  for(j=0; j<a.length; j++){
    if(a[j]=="a"||a[j]=="e"||a[j]=="i"||a[j]=="o"||a[j]=="u"){
      a[j]=b[last];
      last-=1;
    }
  } 
  console.log(a);  
})

【问题讨论】:

  • 试试console.log(b) 而不是console.log(a)
  • 顺便说一句,这是解决问题的好方法。我的意思是,一旦你找出你的错误。干得好!

标签: javascript arrays loops if-statement


【解决方案1】:

a= userInput[0]; & 然后你做a[j] = b[last] 这是问题所在,你不能在 JS 中改变字符串。

所以把它改成a= userInput[0].split(''),把console.log改成console.log(a.join(''))

例子:

function reverseVowels(userInput) {
  a= userInput[0].split('');
  b=[];
  n=0;
  for(i=0; i<a.length; i++){
    if(a[i]=="a"||a[i]=="e"||a[i]=="i"||a[i]=="o"||a[i]=="u"){
      b[n]=a[i];
      n+=1;
    }
  }

  last = b.length-1;
  for(j=0; j<a.length; j++){
    if(a[j]=="a"||a[j]=="e"||a[j]=="i"||a[j]=="o"||a[j]=="u"){
      a[j]=b[last];
      last-=1;
    }
  } 
  console.log(a.join(''));  
}

reverseVowels(['hello']);

【讨论】:

  • a = [...userInput[0]] 会更好,因为它可以拆分 Unicode
【解决方案2】:

hendrixchord 正确地说明了您面临的问题背后的原因。但是,我会提取出一个“isVowel”逻辑。对于登陆这里的任何人来说,这是一个轻微的变化。

const isVowel = item => {
    if (!item) return false
    const chr = item.toLowerCase()
    return chr === 'a' || chr === 'e' || chr === 'i' || chr === 'o' || chr === 'u'
  }

var reverseVowels = function (str) {

  const s = str.split('');

  for (let i = 0, j = s.length - 1; j > i;) {
    if (!isVowel(s[i])) {
      i++
    }
    if (!isVowel(s[j])) {
      j--
    }
    if (isVowel(s[i]) && isVowel(s[j])) {
      let temp = '';
      temp = s[i];
      s[i] = s[j];
      s[j] = temp
      i++;
      j--;
    }
  }

  return s.join('')
};

console.log('reverseVowels', reverseVowels('leetcode'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-08
    • 2019-05-19
    • 2012-01-26
    • 2023-02-01
    相关资源
    最近更新 更多