2022-7-27 剑指offer-回文串判断
给定一个字符串 s
,请计算这个字符串中有多少个回文子字符串。
具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。
1 class Solution { 2 public int countSubstrings(String s) { 3 int ans=0,n=s.length(); 4 int l=0,r=0; 5 for (int i=0;i<2*n-1;i++){ 6 //偶数是字符串,奇数是空隙 7 if (i%2==0){ 8 l=i/2; 9 r=i/2; 10 }else{ 11 l=(i-1)/2; 12 r=(i+1)/2; 13 } 14 while (s.charAt(l)==s.charAt(r)){ 15 ans++; 16 l--; 17 r++; 18 if (l<0||r>=n) break; 19 } 20 } 21 return ans; 22 } 23 }
思路:遍历回文串的中心,可能是字符,也可能是字符中间,一共2n-1个位置。