题目描述
小红拿到了一个只包含 'a' , 'b' , 'c' 三种字符的字符串。
小红想知道,这个字符串最短的、长度超过 1 的回文子串的长度是多少?
子串定义:字符串取一段连续的区间。例如"abcca"的子串有"ab"、"bcca"等,但"aca"则不是它的子串。
回文的定义:一个字符串正着读和倒着读都是相同的,那么定义它的回文的。
输入描述:
一个只包含 'a' , 'b' , 'c' 三种字符的字符串。
数据范围:字符串长度不小于2,且不超过100
输出描述:
如果不存在长度超过1的回文子串,则输出-1。
否则输出长度超过1的最短回文子串的长度。
思路:
高端的结题思路往往采用最原始的办法,那就是逐段截取,然后反转对比
上代码:
import java.util.Scanner; public class Demo{ public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); int length = line.length(); int num = -1; for (int i = 0; i < length; i++) { for (int i1 = i+2; i1 <= length; i1++) { String substring = line.substring(i, i1); char[] chars = substring.toCharArray(); char[] chars1 = reversalCharArr(chars); String oChars = new String(chars); String nChars = new String(chars1); if (oChars.equals(nChars)){ num = Math.max(num,oChars.length()); } } } System.out.println(num); } static char[] reversalCharArr(char[] arr){ int length = arr.length; char[] tempChars = new char[length]; for (int i = 0; i < length; i++) { tempChars[i] = arr[length-i-1]; } return tempChars; } }