javascript - JS如何实现回文

标签 javascript string palindrome

<分区>

给我的问题是这样的;

创建一个接受单词数组并返回仅包含回文的数组的函数。

A palindrome是一个以相同方式向后拼写的单词。

  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
 }

这是我的代码所针对的测试;

describe("findPalindromes", () => {
it("returns [] when passed []", () => {
expect(findPalindromes([])).to.eql([]);
});
it("identifies a palindrom", () => {
 expect(findPalindromes(["racecar"])).to.eql(["racecar"]);
 });
it("ignores non-palindromes", () => {
expect(findPalindromes(["pineapple", "racecar", "pony"])).to.eql([
  "racecar"
]);
 });
 it("returns [] when passed no palindromes", () => {
expect(findPalindromes(["pineapple", "watermelon",      "pony"])).to.eql([]);
 });
});

有人对如何使我的代码工作有任何建议吗?

最佳答案

这是最简单的函数,如果 str 是否为回文,则返回 true 或 false。 我会将其与过滤功能结合使用以过滤所有回文。像这样

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

关于javascript - JS如何实现回文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53895346/

相关文章:

c++ - 从 C++ 中的 std::string 获取字节

c++ - 使用校验函数查找给定范围内的所有回文数

algorithm - 长度为 4 的回文子序列的个数

Javascript Regex替换url中的子目录

java - 删除逗号分隔字符串中多余的逗号

regex - 仅当字符串尚不存在时才使用 sed 将字符串添加到行尾

c - 在 C 中检查给定字符串是否为回文的有效方法

javascript - 用于查找字符串中等距字符的 RegExp 代码

javascript - CSS 切换按钮与 Vue.js 交替传递两个不同的参数

javascript - 通过字符串动态选择一个数组,然后 .map() 在它上面