首页 > 其他分享 >leetcode-647. 回文子串

leetcode-647. 回文子串

时间:2022-10-09 11:01:34浏览次数:73  
标签:子串 center int 647 left 指针 leetcode 回文

647. 回文子串

回文子串是指这个子串正着读反着读读得内容都一样,比如aaa,有以下回文字串a,a,a,aa,,aa,aaa,字符虽然一样但不是同一个字符仍然被看作一个子串

我们可以使用双指针中心扩展法解决这个问题

  • 一个字符串中心只能有两个或者一个,如果有3个,那么他已经是一个回文子串了

  • 中心的个数怎么算,比如abab这个字符串,从左往右依次数,它的中心有a,ab,b,ba,a,ab,b七个,中心就是可以进行扩展到字符,可以说是两个相邻或者单个字符

  • 根据归纳法,我们可以总结出中心的个数 = 2*s.length() - 1

  • 左指针:如果此时中心为1个字符,左指针=右指针=中心,如果有两个字符,左指针代表左边那个中心,left = center / 2

  • 右指针:如果此时中心为2个字符,右指针代表右边那个中心,right = center % 2 + left

public int countSubstrings(String s) {
    int res = 0;
    int length = s.length();
    for(int center = 0; center < 2 * length - 1; center++){
        int left = center/2;
        int right = left + center%2;
        while(left >= 0 && right <= length && s.charAt(left) == s.charAt(right)){
            left--;
            right++;
            res++;
        }
    }
    return res;
}

 

标签:子串,center,int,647,left,指针,leetcode,回文
From: https://www.cnblogs.com/phonk/p/16771381.html

相关文章

  • leetcode-621. 任务调度器
    621.任务调度器假设有任务["A","A","A","B","B","B"],n=2,可以画图表示CPU的时间分配MT表示maxTime,这个任务列表中出现次数最大的任务数量,这里就是MT=3MC表示maxCou......
  • Leetcode 117 -- 树&&bfs
    题目描述填充每个节点的下一个节点题目要求我们填充每个节点的\(next\)指针,让它指向它的(同一层)右侧的节点,如果没有,指向$NULL,(初始时全部指向\(NULL\))。思路看到......
  • Leetcode 927 -- 思维
    题目描述三等分思路题目要求我们将源数组划分为三个连续的序列,即\([0,i],[i+1,j-1],[j,n-1]\),使得这三个序列的二进制所表示的数相等。首先,我们需要挖掘出一个性......
  • leetcode 22 括号生成 js 实现
    22.括号生成难度中等数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合示例1:输入:n=3输出:["((()))","(()())","(()......
  • LeetCode 字符串相乘算法题解 All In One
    LeetCode字符串相乘算法题解AllInOnejs/ts实现字符串相乘jsbignumbermultiply/js大数相乘字符串相乘原理&图解LeetCode43.MultiplyStringsLee......
  • LeetCode算法笔记 53. 最大子数组和
    给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。子数组是数组中的一个连续部分。示例1:输入:nums=[-2,1,-3,4,-1,2......
  • LeetCode算法笔记 217. 存在重复元素
    给你一个整数数组nums。如果任一值在数组中出现至少两次,返回true;如果数组中每个元素互不相同,返回false。示例1:输入:nums=[1,2,3,1]输出:true示例2:输入:nums=......
  • leetcode 94. Binary Tree Inorder Traversal 二叉树的中序遍历(中等)
    一、题目大意给定一个二叉树的根节点root,返回它的中序遍历。示例1:输入:root=[1,null,2,3]输出:[1,3,2]示例2:输入:root=[]输出:[]示例3:输入:root=[......
  • [Oracle] LeetCode 20 Valid Parentheses
    Givenastringscontainingjustthecharacters'(',')','{','}','['and']',determineiftheinputstringisvalid.Aninputstringisvalidif:Openbra......
  • leetcode84-柱状图中最大的矩形
    84.柱状图中最大的矩形 两个星期没写leetcode就连暴力解法都写不出了。暴力解法classSolution{public:intlargestRectangleArea(vector<int>&heights){......