如何解决我应该在哪里放置return语句以获得所需的输出?阅读我的代码注释谢谢
该代码应接收一个字符串并返回并返回不带元音的字符串。 正如您从下面的输出中看到的那样,它之所以起作用,是因为它返回第一个Coding使我变得疯狂,没有a处于疯狂状态,而第二个则使我变得疯狂,以此类推...
function removeVowelFromString(string) {
let newCharactersArray = [];
charactersArray = string.split('');
let vowels = ['a','e','i','o','u'];
for (const vowel of vowels) {
for (let i = 0; i < charactersArray.length; i++) {
if (vowel === charactersArray[i]) {
continue;
}
else {
newCharactersArray.push(charactersArray[i]);
}
}
}
return newCharactersArray.join('');
}
console.log(removeVowelFromString('Coding is driving me crazy '));
//单行输出 //编码使我疯狂编码使我疯狂编码使我疯狂编码使我疯狂编码使我疯狂
解决方法
您可以使用includes方法来检查charactersArray [i]的单词是否是元音,只要一个循环就足够了
function removeVowelFromString(string) {
let newCharactersArray = [];
charactersArray = string.split('');
let vowels = ['a','e','i','o','u'];
for (let i = 0; i < charactersArray.length; i++) {
if (vowels.includes(charactersArray[i])) {
continue;
}
else {
newCharactersArray.push(charactersArray[i]);
}
}
return newCharactersArray.join('');
}
console.log(removeVowelFromString('Coding is driving me crazy '));
如果您只想匹配元音,则可以这样做:
function removeVowelFromString(string) {
let newCharactersArray = [];
charactersArray = string.split('');
let vowels = ['a','u'];
for (let i = 0; i < charactersArray.length; i++) {
if (!vowels.includes(charactersArray[i])) {
continue;
}
else {
newCharactersArray.push(charactersArray[i]);
}
}
return newCharactersArray.join('');
}
console.log(removeVowelFromString('Coding is driving me crazy '));
,
以下是您可以参考的一些文档:
//you could do it like
function removeVowelFromString(string) {
let vowels = "aeiou";
return [...string].filter(x => !vowels.includes(x.toLowerCase())).join("");
}
console.log(removeVowelFromString("Will remove vowels from this string"))
我希望我能提供帮助。
,如评论之一中所建议。通过创建isVowel()
函数来解决该问题,并仅对字符串中的所有字符进行一次迭代以检查给定字符是否为元音:
function isVowel(c) {
return ['a','u'].includes(c);
};
function removeVowelFromString(string) {
let newCharactersArray = [];
charactersArray = string.split('');
for (let i = 0; i < charactersArray.length; i++) {
if (isVowel(charactersArray[i])) {
continue;
}
else {
newCharactersArray.push(charactersArray[i]);
}
}
return newCharactersArray.join('');
}
console.log(removeVowelFromString('Coding is driving me crazy '));
此代码以O(n * k)
的时间复杂度运行,其中n
是字符串的长度,k
是英语中的元音数量(即5
。因此,总体复杂度为O(5n)
= O(5)
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。