动态规划之最长回文子串(字符串问题)

概念

回文字符串(Palindrome String)是指正着读和反着读都一样的字符串。换句话说,从左到右读取和从右到左读取字符的顺序完全相同。回文字符串不要求所有的字符都对称,只需要正读和反读相同。

回文字符串的特性

  • 对称性:回文字符串是完全对称的,即正反读的字符顺序一致。
  • 长度:回文字符串可以是奇数长度或偶数长度。奇数长度的回文字符串的中间字符是“对称轴”,而偶数长度的回文字符串没有明确的中间字符。
  • 空字符串:空字符串 "" 也被视为回文字符串。

示例

  • 回文字符串:
    • "racecar":正着读和反着读都是 "racecar"
    • "madam":正着读和反着读都是 "madam"
    • "level":正着读和反着读都是 "level"
  • 非回文字符串:
    • "hello":正着读是 "hello",反着读是 "olleh",不是回文字符串。
    • "world":正着读是 "world",反着读是 "dlrow",也不是回文字符串。

判断一个字符串是否为回文

我们可以通过比较字符串与其反转后的字符串是否相等来判断一个字符串是否为回文。例如:

  • 字符串 s 如果满足 s === s.split('').reverse().join(''),则该字符串是回文。

示例代码(JavaScript)

function isPalindrome(s) {
   
   
    // 去除非字母数字字符,并转换为小写
    const cleanedString = s.replace(/[^a-zA-Z0-9]/g, '').toLowerCase();
    // 比较原始字符串和反转后的字符串是否相等
    return cleanedString === cleanedString.split('').reverse().join('');
}

console.log(isPalindrome("A man, a plan, a canal, Panama"));  // 输出: true
console.log(isPalindrome("hello"));  // 输出: false

额外注意

  • 在实际应用中,回文字符串的判断有时会忽略大小写和非字母数字字符,比如 "A man, a plan, a canal, Panama",去掉空格和标点符号后它仍然是回文字符串。

题目

给你一个字符串 s,找到 s 中最长的回文子串

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值