• Leetcode 647. 回文子串 中等 字符串


    647. 回文子串

    题目:

    给你一个字符串 s ,请你统计并返回这个字符串中 回文子串 的数目。

    回文字符串 是正着读和倒过来读一样的字符串。

    子字符串 是字符串中的由连续字符组成的一个序列。

    具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。

    示例 1:

    输入:s = "abc"
    输出:3
    解释:三个回文子串: "a", "b", "c"

    思路:

    判断包含的回文子串的数目。

    可以在判断回文串的过程中记录出现的次数。

    回文子串判断可以是从(i,i)起始,也可以从(i,i+1)起始。两者统计的子串不同。

    class Solution {
    public:
        int countSubstrings(string s) {
            int n=s.size();
            int ret=0;
            for(int i=0;i<n;++i){
                ret+=count(i,i,s);
                ret+=count(i,i+1,s);
            }
            return ret;
        }
        int count(int i,int j, const string& s){
            int ret=0;
            int n=s.size();
            while(i>=0&&j<n){
                if(s[i]==s[j]){
                    ret++;
                    i--;
                    j++;
                } else{
                    break;
                }
            }
            return ret;
        }
    };
  • 相关阅读:
    「搬运」影魔
    「不会」斯特林数
    「不会」二项式反演
    「不会」插头dp
    「不会」主定理
    「不会」网络流
    接口和抽象类的区别
    TestNG常用注解
    九九乘法表-Java
    冒泡排序和选择排序--Java
  • 原文地址:https://www.cnblogs.com/zl1991/p/16229262.html
Copyright © 2020-2023  润新知