首页 > 试题广场 >

最长回文

[编程题]最长回文
  • 热度指数:1534 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
回文,亦称回环,是正读反读都能一样的字符串。例如“12321”、“abba”等。
现在给你一个字符串,请你找出其中长度最长的回文。

输入描述:
输入有多组数据。

每组数据有一行,包含一个长度小于100个字符的字符串s,且仅由字母和数字构成。

如果有多个长度相等的回文,仅输出第一个。


输出描述:
对应每一组输入,输出其中长度最长的回文字符串。
示例1

输入

abcabccbadda
abcabccbaddabcc

输出

abccba
ccbaddabcc
import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String s = sc.next();
			String str = "#";
			String res = "";
			for (int i = 0; i < s.length(); i ++ )
				str += s.charAt(i) + "#";
			for (int i = 0; i < str.length(); i ++ )
				res = res.length() >= check(str, i, i).length() ? res : check(str, i, i);
			System.out.println(res);
		}
	}

	public static String check(String str, int left, int right) {
		while (left >= 0 && right < str.length() && str.charAt(left) == str.charAt(right)) {
			left -- ;
			right ++ ;
		}
		return str.substring(left + 1, right).replace("#", "");
	}
}

编辑于 2016-11-12 16:54:02 回复(0)