Javascript JS如何获取回文
我得到的问题是: 创建一个函数,该函数接受一个单词数组并返回一个仅包含回文的数组 A是一个反向拼写相同的单词Javascript JS如何获取回文,javascript,string,palindrome,Javascript,String,Palindrome,我得到的问题是: 创建一个函数,该函数接受一个单词数组并返回一个仅包含回文的数组 A是一个反向拼写相同的单词 E.g. ['foo', 'racecar', 'pineapple', 'porcupine', 'pineenip'] => ['racecar', 'pineenip'] 这是我创建的代码 let arr = [] let str = words.slice(0) let pal = str.toString().split("").reverse().join("")
E.g. ['foo', 'racecar', 'pineapple', 'porcupine', 'pineenip'] => ['racecar', 'pineenip']
这是我创建的代码
let arr = []
let str = words.slice(0)
let pal = str.toString().split("").reverse().join("")
console.log(pal);
for (let i = 0; i < words.length; i++) {
for (let k = 0; k < pal.length; k++) {
if (words[i] == pal[k]) {
arr.push(words[i])
}
}
}
return arr
}
有人对如何使我的代码工作有任何建议吗?这是最简单的函数,如果str是否是回文,它将返回true或false。
function isPalindrome(word) {
const firstHalf = word.slice(0, Math.ceil(word.length/2));
const secondHalfReversed = word.slice(Math.floor(word.length/2)).split('').reverse().join('');
return firstHalf === secondHalfReversed;
}
function getPalindromesFromArray(arr) {
return arr.filter(isPalindrome);
}
const wordsArr = ['foo', 'racecar', 'pineapple', 'porcupine', 'pineenip'];
console.log(getPalindromesFromArray(wordsArr));
我会结合使用过滤函数来过滤所有回文。像这样
function checkPalindrom(str) { //function that checks if palindrome or not
return str == str.split('').reverse().join('');
}
const result = words.filter(word => checkPalindrom(word)); //filter function that filters array to only keep palindromes
在不给破坏者答案的情况下(这是一个常见的面试问题),干净的方法如下:
isAlindrome(字符串):布尔值
inputArray.filter(isAlindrome)
您可以为isAlindrome
[{input:“racecar”,expectedOutput:true},{input:“菠萝”,expectedOutput:false},…]定义一个输入和预期输出数组,并在每个测试用例上循环。
使用for
循环和过滤器
let arr=[“foo”、“racecar”、“菠萝”、“豪猪”、“松果”、“pap”、“aaaa];
设回文=arr.filter(w=>{
设len=w.长度;
for(设i=0;i log(回文)
要解决这个问题,首先我要创建一个isAlindrome函数,如下所示:
function isPalindrome(word) {
palindromeWord = ''
for(var i = word.length - 1; i >= 0; i--) {
palindromeWord += word.charAt(i)
}
return palindromeWord === word
}
let arr = ['foo', 'racecar', 'pineapple', 'porcupine', 'pineenip']
let palindromeArr = []
arr.forEach(word => {
if (isPalindrome(word)) {
palindromeArr.push(word)
}
})
console.log(palindromeArr)
然后我会像这样检查数组中的每个单词:
function isPalindrome(word) {
palindromeWord = ''
for(var i = word.length - 1; i >= 0; i--) {
palindromeWord += word.charAt(i)
}
return palindromeWord === word
}
let arr = ['foo', 'racecar', 'pineapple', 'porcupine', 'pineenip']
let palindromeArr = []
arr.forEach(word => {
if (isPalindrome(word)) {
palindromeArr.push(word)
}
})
console.log(palindromeArr)
你所拥有的是好的,但是当你做到的时候
var pal = str.toString().split("").reverse().join("")
您将数组更改为字符串,然后使用字符串进入循环,因此pal[k]给出的是一个字符,而不是一个单词
要将pal更改回字符串数组,请再次拆分它,使用
var pal = str.toString().split("").reverse().join("").split(",");
var words=['foo','racecar','菠萝','horcupine','pineenip'];
var-arr=[];
var str=words.slice(0);
var pal=str.toString().split(“”).reverse().join(“”).split(“”,“”);
控制台日志(pal);
for(设i=0;i 控制台日志(arr)我不同意这一点,他不是在问如何进行回文检查。他在问他的特殊解决方案不起作用。正如我在回答中所说的,他只需要拆分变量pal就可以得到数组的形式。你能详细说明一下你的代码吗,尽管这段代码没有通过提供的测试。return str.toLowerCase().split(“”).reverse().join(“”)=str.toLowerCase()
将使其适用于同时包含大写和小写字母的单词。