求最大回文前缀的长度问题

题目描述:
求一个字符串的最大回文前缀长度。回文是指正反方向读起来都是一样的字符串,比如“abcdcba”就是一个回文。
输入:
多行字符串。
输出:
最大回文前缀的长度。

样例输入:
abc
abcd
abcdc
abcdcb
abcdcba

样例输出:
1
1
1
1
7

注意本题是求回文前缀的长度,需要从字符串的首部开始,字符串中间到尾部的部分形成的回文不算。

一种实现代码如下(Java版):

 1 import java.util.Scanner;
 2 
 3 public class Main {
 4     public static void main(String[] args) {
 5         Scanner in = new Scanner(System.in);
 6         while (in.hasNext()) {
 7            String str = in.nextLine();
 8            System.out.println(getResult(str));
 9         }
10         in.close();
11     }
12     
13     public static int getResult(String str){
14         int result = 0;
15         int i = 0; //第一个指针从字符串首部向后移动
16         int j = str.length() -1; //第二个指针从字符串尾部向前移动
17         int hlen = j; //记录回文的长度-1
18         while (i <= j) {
19             if (str.charAt(i) == str.charAt(j)) {
20                 ++i;
21                 --j;
22             }else {
23                 i = 0;
24                 --j;
25                 hlen = j;
26             }
27         }
28         result = hlen+1;  //最大回文前缀的长度
29         return result;
30     }
31 }

 

posted @ 2017-11-07 21:57  JiaJoa  阅读(596)  评论(0编辑  收藏  举报