判断回文串我们可以从中间向两边遍历:
public static int isPalindrome(String s,int left,int right){
if(s==null) return 0;
while(left>=0 && right<s.length() && s.charAt(left)==s.charAt(right)){
left--;
right++;
}
return (right-left)/2;
}
完整代码:
import java.util.*;
public class Main{
public static void main(String [] args){
Scanner in=new Scanner(System.in);
String s=in.nextLine();
int sum=0;
for(int i=0;i<s.length();i++){
sum=sum+isPalindrome(s,i,i);
if(i<s.length()-1 && s.charAt(i)==s.charAt(i+1)){
sum+=isPalindrome(s,i,i+1);
}
}
System.out.println(sum);
}
public static int isPalindrome(String s,int left,int right){
if(s==null) return 0;
while(left>=0 && right<s.length() && s.charAt(left)==s.charAt(right)){
left--;
right++;
}
return (right-left)/2;
}
}