求最大(长)回文字符串的长度(或打印出最长回文字符串)——Java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了求最大(长)回文字符串的长度(或打印出最长回文字符串)——Java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1383字,纯文字阅读大概需要2分钟。
内容图文
![求最大(长)回文字符串的长度(或打印出最长回文字符串)——Java](/upload/InfoBanner/zyjiaocheng/618/b6cbcfe89f2943bb8944ad5bd3a6b1c1.jpg)
最后打印那部分我没做,如果有需要的同学,可以看我的最后输出长度上边的打印注解。
因为已经求出最大长度,那打印很简单,只需要记录下两个值就可以打印。
(以下为代码)
import java.util.Scanner;
//回文字符串暴里破解法,求回文字符串长度
public class huiwen1 {
public static void main(String[] args) {
//写下字符串并拆分成数组
Scanner sc = new Scanner(System.in);
char[] array= sc.nextLine().toCharArray();
//记录最大回文字符串长度
int max = 0;
//从第一个字符开始判断
for (int i = 0; i < array.length-1; i++) {
//从后往前找,找到与第i个字符相同的
for (int j = array.length-1; j > i; j--) {
//找到相同
if (array[i] == array[j]){
//找寻中心点位置
int zhong = (i+j)/2;
int add = 0,num1=0;
//如果为是长度为3,那么中心点就是2,如果长度是4,那么中心点是2,3,要判断下
if ((i+j)%2==1){
add = 1;
}
int jilu = zhong+add;
//由中心向外判断,如果依次都是回文,那就没事,如果不是,就退出,就说明i到j这一段不是回文
for (int k = zhong+add; k < j; k++) {
if (add==0 && (k+1)==j){
num1=k;
break;
}
if (array[k]!=array[jilu-1])
break;
else{
num1=k;
jilu--;
}
}
//此处判断为,一旦是回文,那就求出长度,方便后续判断
if (num1+1==j){
max = max > j-i+1?max : j-i+1;
}
}
//此处为在知道是回文基础上,减少i循环次数,节约时间,从第j开始出发找下个回文
if (max!=0){
i=j;
break;
}
}
}
//如果全部不是回文,那就要打印1
if (max == 0)
max=1;
//想打印最长回文字符串,可以在找出回文字符串的里面
// 把i和j的所在的字符位置,记录下,再最后for循环i到j打印
System.out.println(max);
}
}
内容总结
以上是互联网集市为您收集整理的求最大(长)回文字符串的长度(或打印出最长回文字符串)——Java全部内容,希望文章能够帮你解决求最大(长)回文字符串的长度(或打印出最长回文字符串)——Java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。