1. 程式人生 > 資訊 >世界首富只是開始,分析師認為馬斯克將憑 SpaceX 成首位萬億美元富豪

世界首富只是開始,分析師認為馬斯克將憑 SpaceX 成首位萬億美元富豪

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;
    }
}