欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

NYOJ—308—Substring,nyojsubstring

来源: javaer 分享于  点击 30521 次 点评:214

NYOJ—308—Substring,nyojsubstring


Substring

时间限制:1000 ms  |  内存限制:65535 KB 难度:1
描述

You are given a string input. You are to find the longest substring of input such that the reversal of the substring is also a substring of input. In case of a tie, return the string that occurs earliest in input. 

Note well: The substring and its reversal may overlap partially or completely. The entire original string is itself a valid substring . The best we can do is find a one character substring, so we implement the tie-breaker rule of taking the earliest one first.

输入
The first line of input gives a single integer, 1 ≤ N ≤ 10, the number of test cases. Then follow, for each test case, a line containing between 1 and 50 characters, inclusive. Each character of input will be an uppercase letter ('A'-'Z').
输出
Output for each test case the longest substring of input such that the reversal of the substring is also a substring of input
样例输入
3                   
ABCABA
XYZ
XCVCX
样例输出
ABA
X
XCVCX
来源
第四届河南省程序设计大赛
上传者

张云聪

import java.util.Scanner;

public class Main {

	/**
	 * @param args
	 */

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();
		while (N-- > 0) {
			String str = sc.next();

			StringBuffer sb = new StringBuffer(str);
			sb.reverse();
			String str2 = sb.toString();

			if (str2.equals(str) == true) {
				System.out.println(str);
				continue;
			}

			int len = str.length();
			int max = 0;
			String str3 = "";
			for (int i = 0; i < len; i++)
				for (int j = i + 1; j <= len; j++) {
					if (str2.contains(str.substring(i, j)) == true
							&& (j - i) > max) {
						max = j - i;
						str3 = str.substring(i, j);
					}
				}
			System.out.println(str3);
		}
	}

}


相关文章

    暂无相关文章

用户点评