世界首富只是開始,分析師認為馬斯克將憑 SpaceX 成首位萬億美元富豪
阿新 • • 發佈:2021-10-20
647. 迴文子串
1. 題目描述
來源: https://leetcode-cn.com/problems/palindromic-substrings/
2. 思路
2.1 中心拓展
對於s
中任何一個字元s[i]
,均有可能是一個迴文子串的中心位置,因此可以以s[i]
為著手點,同時向兩邊發散,若左右兩邊的元素相同,則說明找到一個迴文子串,迴文子串數量加一。這是子串數量為奇數的情況,對於偶數個字元的子串,可以以兩個連續字元s[i]
和s[i+1]
分別為向左和向右拓展的起始點向兩邊拓展。
程式碼(Java)
class Solution { private int result = 0; private void ext(String s, int n, int tl, int tr){ while(true){ if(tl>=0 && tr<n && s.charAt(tl)==s.charAt(tr)){ result++; tl--; tr++; continue; } break; } } public int countSubstrings(String s) { int n = s.length(); for(int i = 0; i < n; i++){ // 2n int ToLeft = i; int ToRight = i+1; ext(s, n, ToLeft, ToRight); // 2n + 1 // ToLeft = i; ToRight = i; ext(s, n, ToLeft, ToRight); } return result; } }