当前位置:首页 > 开发 > 系统架构 > 架构 > 正文

java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度

发表于: 2012-02-27   作者:bylijinnan   来源:转载   浏览:
摘要: public class LongestSymmtricalLength { /* * Q75题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。 * 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。 */ public static void main(String[] args) { Str

public class LongestSymmtricalLength {

	/*
	 * Q75题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
	 * 比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
	 */
	
	public static void main(String[] args) {
		String[] strs={
				"google",
				"elgoog",
				"agollloge",
				"aba",
				"aaaaaa",
		};
		for(String each:strs){
			int len=longestSymmtricalLength(each);
			System.out.println(len);
		}
	}

	/*
	 * consider this string:
	 * ..aAa..(A represents a string of any length)
	 * if we already know 'A' is a palindrome,
	 * we just need to test if the char before 'A' and that after 'A' are the same
	 * if so,A=aAa now.
	 * Do it again and again to find the result.
	 */
	public static int longestSymmtricalLength(String str){
		if(str==null||str.length()==0){
			return -1;
		}
		int symLen=1;
		char[] letter=str.toCharArray();
		int strLen=str.length();
		int curIndex=1;
		while(curIndex>0&&curIndex<strLen-1){
			//odd symmetrical length,the 'pivot' char is letter[curIndex]
			int i=curIndex-1;
			int j=curIndex+1;
			while(i>=0&&j<=(strLen-1)&&letter[i]==letter[j]){
				i--;
				j++;
			}
			int newLen=j-i-1;
			if(newLen>symLen){
				symLen=newLen;
			}
			//even symmetrical length,the 'pivot' chars are letter[curIndex] and letter[curIndex+1]
			i=curIndex;
			j=curIndex+1;
			while(i>=0&&j<=(strLen-1)&&letter[i]==letter[j]){
				i--;
				j++;
			}
			newLen=j-i-1;
			if(newLen>symLen){
				symLen=newLen;
			}
			curIndex++;
		}
		return symLen;
	}
}

java-73-输入一个字符串,输出该字符串中对称的子字符串的最大长度

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于
/* * Copyright (c) 2012, 烟台大学计算机学院 * All rights reserved. * 作 者: 刘同宾 * 完成日
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于
本章主要讨论格式化输入、输出,字符串做简要概述,等11章详细讲解 字符串:是指连续的存储单元,末
题目要求:   输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串"google"
从键盘输入10个字符串存放到一个二维数组中,求出其中最大者并输出 算法设计如下: 1.定义一个二维
/* 02.* 程序的版权和版本声明部分 03.* Copyright (c)2012, 烟台大学计算机学院学生 04.* All righ
/* * Copyright (c) 2013, 烟台大学计算机学院 * All rights reserved. * 作 者:马广明 * 完成日期
代码: Example9_7.java public class Example9_7 { public static void main(String args[]){ Wind
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号