美文网首页
回文字符串问题

回文字符串问题

作者: 大脸猫猫脸大 | 来源:发表于2019-10-11 17:56 被阅读0次

题目

647. Palindromic Substrings

解法

1、对于原先长度为N的数组ss,我们构造一个虚拟数据vss(并非真是存在,不占用存储空间),改数据长度为2N-1,构造方法如下图所示。
2、构造数据中蓝色方框表示虚拟数,其坐标无法被2整除。而真实数的坐标都是2的整数倍。

数组重构
3、设置两个指针sten,分别表示回文字符串的起始和结束坐标,且始终指向真实值。指针在初始状态位置相同。
4、遍历构造数据,当初始状态位于虚拟数位置时,修正st,en的位置使其指向真实值。随后在原数组中进行滑动,更新st,en,若ss[st]==ss[en],则表示新增回文,否则迭代结束,读取构造数据下一个数据。
    def countSubstrings(self, s: str) -> int:
        res = 0
        for i in range(2*len(s)):
            if i%2!=0:
                st = int(i/2)
                en = st + 1
            else: st = en = int(i/2)
            while st>=0 and en<len(s):                
                    if s[st]==s[en]:
                        res, st, en = res+1, st-1, en+1
                    else: break
        return res

相关文章

  • DP问题求解(三)回文字符串问题

    DP问题求解(三)回文字符串问题 所谓回文字符串,Palindromic Substring,指正序和倒序相同的字...

  • 最长回文子串

    最长回文子串——Manacher 算法 1. 问题定义 最长回文字符串问题:给定一个字符串,求它的最长回文子串长度...

  • 回文字符串的判断及返回最大串

    回文字符串的判断及返回最大串 问题1:怎么获取一个字符串的子串? 问题2:怎么判断一个字符串是回文字符串? 问题1...

  • Manacher's algorithm

    Manacher算法主要解决的问题是求给定字符串中最长的回文字符串。 以前咱们求解回文字符串的步骤是找中心点, ...

  • 字符串进阶

    1.反转字符串 2.字符串包含问题 3.字符串转数字 4.判断是否为回文判断一条单向链表是不是“回文” 分析:对于...

  • 最长回文子串

    问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。 解法1:暴力解法 找到字符串的所有子串,判断...

  • 最长回文子串问题—Manacher算法

    最长回文串问题是一个经典的算法题。 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果...

  • 经典问题与算法:最长回文子串问题与Manacher算法

    问题描述:给定一个字符串,求出其最长回文子串的长度例如:对于字符串s="acaacdbab"而言,其回文子串分别为...

  • C# 判断字符串是否是回文字符串(单链表)

    回文字符串: ABCDCBA ABCDDCBA 两种都属于回文字符串; 如何判断一个字符串是否是否回文: 使用快慢...

  • 680. Valid Palindrome II

    题目: 给你一个字符串,判断至多删掉一个字符串能不能让这个字符串变成回文串。 解析: 又是一道回文字符串判断的问题...

网友评论

      本文标题:回文字符串问题

      本文链接:https://www.haomeiwen.com/subject/cqftyctx.html