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代码-使用java输入一个长度不超过30的字符串然后再输入一个字符输出该字符在字符串中出现的次数的源代码 ——学习参考资料:仅用于个人学习使用!
java接收用户输入的一个字符串和一个字符,将字符串中出现的所有该字符删除,打印新生成的字符串。
java获取字符串长度,长度不够补相应的字符串
在JAVA里面实现判断字符串长度,和截取字符串
将输入的字符串反转 java 6string fanzhhuan.rar
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接...假设有一个字符串,我们将对这个字符串做大量循环拼接操作,使用”+”的话将得到最低的性能。但是究竟这 个性能有多差? 解压密码 www.jiangyea.com
java编写一个截取字符串的函数,输入为一个字符串和字节数
C语言 输入一行字符串,将其中的数字删除,打印其余字符
Java字符串长度不够前面或后面补0
计算字符串最后一个单词的长度,单词以空格隔开。 输入 一行字符串,长度小于128。 输出 整数N,最后一个单词的长度。 样例输入 hello world
编写程序,该程序实现打开一个文本文件,每次读取一行内容,将每行作为一个字符串读入,并将字符串输出显示到屏幕上。
实验目的: 练习使用Java基本数据类型。使用Java的String类操作字符串和子串。...(c)改进程序,即使当用户输入顺序错误时(第一个是长字符串,第二个是短字符串),能自动在长字符串中搜寻短字符串。
这个方法用来处理java中可能有一些特别的需要,一大串中英文混合,需要中间截断或是中英中间添加一些特别的标识,调用这个方法 第一个参数是要处理的字符串,第二个是要在中英字符中间插入的字符。调用就可以得到想...
Java字符串长度不够,将其前面补0或者后面补0,适用于字典序比较前,将要比较字符串的位数保持一致,再进行比较。
Java字符、字符串、数组操作实例,主要是数组的复制、反转字符串中的字符、命令行参数、求字符串的长度及每一个位置上的字符、数组的排序、String类数组的操作等方面的例子,相信对初学者学习Java有帮助的。
HJ1-字符串最后一个单词的长度
java代码-使用java生成一个固定位数的随机字符串,并加密,和用户密码加密后的密文组合的源代码 ——学习参考资料:仅用于个人学习使用!
java 字符串分割 代码 输入一字符串(长度小于100),10个字符一组分割存入新的数组,倒序输出。
最长子字符串,无重复字符,Java实现 给定字符串s,找到最长子字符串的长度而不重复字符。 示例1:输入:s =“ abcabcbb”输出:3说明:答案为“ abc”,长度为3。 示例2:输入:s =“ bbbbb”输出:1说明:答案为...
编写程序完成如下功能:输出字符串“www.google.com”的长度,并分别计算并显示出‘o’ 与‘g’的个数,截取其中“google”进行输出显示。 2、编写程序,尝试用“==”与equals()方法比较“Hello java”与“Hello ...