本文主要是介绍LeetCode(字符串)---647.回文子串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被计为是不同的子串。
示例 1:
输入: “abc”
输出: 3
解释: 三个回文子串: “a”, “b”, “c”.
示例 2:
输入: “aaa”
输出: 6
说明: 6个回文子串: “a”, “a”, “a”, “aa”, “aa”, “aaa”.
注意:
输入的字符串长度不会超过1000。
思路:
求回文串的个数最终都可以划分为以单个字母为中心,以两个字母为中心并不断向两边扩展所能的到到回文串的个数。
解答:
class Solution {int count = 0;public int countSubstrings(String s) {for(int i = 0; i < s.length(); i ++) {extendSubstrings(s,i,i); //单个字母的中心点extendSubstrings(s,i,i+1); //两个字母的中心点}return count;}public void extendSubstrings(String s, int start, int end) {//由中间向两边扩展while(start>=0 && end<s.length() && s.charAt(start)==s.charAt(end)) {start--;end++;count++;}}
}
这篇关于LeetCode(字符串)---647.回文子串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!