回文,亦称回环,是正读反读都能一样的字符串。例如“12321”、“abba”等。
现在给你一个字符串,请你找出其中长度最长的回文。
输入有多组数据。
每组数据有一行,包含一个长度小于100个字符的字符串s,且仅由字母和数字构成。
如果有多个长度相等的回文,仅输出第一个。
对应每一组输入,输出其中长度最长的回文字符串。
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("#", ""); } }