【问题标题】:Finding the longest Palindrome in a string and returning the longest single word in Javascript查找字符串中最长的回文并返回 Javascript 中最长的单个单词
【发布时间】:2020-11-24 10:09:09
【问题描述】:

我写了一个方法来找到一个单词中最长的回文。到目前为止,我已经使用 for 循环来执行此操作,但它没有返回正确的单词。

function findLongestPalindrome(sentence) {
  let wordArray = sentence.split(" ");
  let longestWord = 0;
  let word = " ";
  
  for(let i = 0; i < wordArray.length; i++) {
    if(longestWord < wordArray[i].length) {
      longestWord = wordArray[i].length;
      word = wordArray[i]
    }
  }
  return word;
}

谁能告诉我哪里出错了?

【问题讨论】:

  • 问题是找到最长的回文而不是最长的单词。回文是一个反向阅读时相同的单词。
  • 你在哪里检查这个词是否是回文?这只是让你最重要的一句话。网上有数百个例子可以检查一个单词是否是回文:Palindrome check in Javascript

标签: javascript for-loop palindrome


【解决方案1】:

您缺少检查字符串是否为回文的功能。请参考以下代码,您可以使用new Set() 进一步优化并重构代码。

function findLongestPalindrome(sentence) {
  let wordArray = sentence.match(/\b\w+\b/g),
      longestWord = 0,
      word = " ";

  for (let i = 0; i < wordArray.length; i++) {
    if (longestWord < wordArray[i].length && isPalindrome(wordArray[i])) {
      longestWord = wordArray[i].length;
      word = wordArray[i]
    }
  }
  
  return word;
}

function isPalindrome(str) {
  return str.split('').reverse().join('') === str;
}

console.log(
  findLongestPalindrome('This is an interesting sentence: kayak, november, anna')
)

【讨论】:

  • 这不会返回最长的单个回文词。
  • 至少这对我有用。如果您使用任何不起作用的句子,请发送预期输出,我可以检查
  • findLongestPalindrome('这是一个有趣的句子:kayak, november, anna') // 应该返回 'kayak'
  • @andy86 如果您的句子有除空格 " " 以外的分隔符,您可以使用在 word boundaries 处拆分的 this regex。请检查答案中的 sn-p。如果它解决了您的问题,请点击左侧的灰色复选标记mark it as accepted
猜你喜欢
  • 2020-03-04
  • 1970-01-01
  • 2014-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多