`

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

 
阅读更多

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;
	}
}

0
0
分享到:
评论

相关推荐

    java代码-使用java输入一个长度不超过30的字符串然后再输入一个字符输出该字符在字符串中出现的次数的源代码

    java代码-使用java输入一个长度不超过30的字符串然后再输入一个字符输出该字符在字符串中出现的次数的源代码 ——学习参考资料:仅用于个人学习使用!

    输入一个字符串,输出所有该字符串的组合情况

    标题 "输入一个字符串,输出所有该字符串的组合情况" 涉及的主要知识点是字符串处理和算法,特别是组合和排列的生成。在这个问题中,我们需要编写程序来生成一个给定字符串的所有可能的子序列或子字符串,这通常涉及...

    java接收用户输入的一个字符串和一个字符,将字符串中出现的所有该字符删除,打印新生成的字符串

    java接收用户输入的一个字符串和一个字符,将字符串中出现的所有该字符删除,打印新生成的字符串。

    字符串长度的判断 JAVA

    以下将详细讲解如何在Java中进行字符串长度的判断以及如何截取字符串。 首先,创建一个字符串对象通常使用`String`类的构造函数或者双引号括起来的字符串字面量。例如: ```java String panduan = "你好"; ``` 在...

    将输入的字符串反转 java

    在Java编程语言中,字符串反转是一个常见的操作,尤其在处理用户输入或数据处理时。本文将深入探讨如何在Java中实现字符串反转,并提供一个具体的示例来解释这一过程。 首先,我们要理解Java中的字符串是不可变对象...

    输入10个字符串到一个字符串数组

    ` 声明了一个长度为 10 的字符串数组。 - **数组初始化**:`str[i] = scanner.next();` 从用户处接收输入并将其存储在数组中。 #### 3.2 遍历数组 - **for 循环**:使用 for 循环遍历数组。例如,`for (int i = 0; ...

    Java字符串长度不够前面或后面补0.txt

    ### Java字符串长度不够前面或后面补0 在Java编程中,有时我们需要确保字符串达到特定的长度,如果实际长度不足,则需要在字符串的前部或后部添加特定字符(如0)来填充,使得最终字符串满足预设长度的要求。本文将...

    java获取字符串长度不够补

    java获取字符串长度,长度不够补相应的字符串

    Java分割字符串

    在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某个部分。这通常通过使用`split()`方法来实现,该方法是Java `String`类的一个成员。在...

    java 字符串分割

    字符串分割是指将一个给定的字符串按照一定的规则分割成多个子字符串的过程。在 Java 中,我们可以使用 String 类的方法来实现字符串分割,例如使用 split() 方法将字符串分割成数组。 知识点二:Java 中的字符串...

    截取指定长度的字符串

    "截取指定长度的字符串"这个主题涉及到的是如何从一个字符串中提取出特定长度的部分。这在处理用户输入、数据展示、信息提取等多个场景中都非常常见。接下来,我们将深入探讨这个知识点。 首先,让我们明确什么是...

    java编写一个截取字符串的函数,输入为一个字符串和字节数.docx

    Java 字符串截取函数 ...本例中,我们实现了一个 Java 字符串截取函数,该函数可以截取指定字节的字符串,并保证汉字不被截半个。该函数使用 `substring` 方法来实现字符串截取,并且可以应用于各种字符串处理场景。

    Java检索字符串中是否存在某字符

    这是指KMP算法的主要应用,即判断一个给定的子串是否是主字符串的子序列。通过遍历主字符串和子串,如果可以顺利完成匹配,那么子串就在主字符串中;反之,不在。 4. 描述中的"2是检索出现几次": 如果我们要统计...

    java字符串实验题目

    Java字符串是编程中非常基础且重要的概念,尤其是在Java语言中,字符串处理无处不在。String类在Java中扮演着至关重要的角色,它是不可变的对象,这意味着一旦创建了String对象,就不能更改其内容。这个特性源自于...

    统计字符串中子字符串出现的次数,并返回

    在上面的简单实现中,如果子字符串长度较小,每次查找可能都会遍历大部分父字符串,效率较低。为提高效率,可以考虑使用滑动窗口或KMP(Knuth-Morris-Pratt)算法等高级算法,它们可以在平均时间复杂度上达到线性...

    比较字符串1

    标题 "比较字符串1" 描述的是一个算法训练问题,旨在比较两个字符串的字典序,并在它们不相等时找出第一个不同的字符。这个问题涉及到的主要知识点包括字符串操作、字典序比较以及基本的ASCII码理解。 首先,我们...

    java中截取带汉字的字符串

    在Java编程语言中,处理包含中文字符的字符串时,经常遇到的一个问题是如何正确地截取这些字符串。如果直接按照字节(byte)来进行分割,很容易导致中文字符被截断一半,从而形成乱码。这是因为一个中文字符通常占用多...

    求字符串中的第一个数字

    根据给定的信息,我们可以分析并总结出以下与“求字符串中的第一个数字”相关的知识点: ### 1. 字符串操作基础 #### 1.1 字符串简介 在 Java 中,`String` 类用于表示不可变的字符序列,即字符串。字符串在 Java ...

    字符串处理必做题解析

    - **输入输出格式**:输入包括多组测试数据,每组包含一个字符串;输出对于每组数据,输出出现次数最多的字符及其出现次数。 - **解题思路**: - 使用一个长度为26的整型数组`count`记录每个字符的出现次数。 - ...

    java 分解字符串

    在Java编程语言中,分解字符串是一项常见的任务,它涉及到对字符串进行分析,将字符串分割成多个子字符串。这个过程通常被称为字符串分割。在Java中,我们主要使用`String`类提供的`split()`方法来实现这一功能。...

Global site tag (gtag.js) - Google Analytics