求出 最长回文字符串 JAVA版本【给出编码思想

编程入门 行业动态 更新时间:2024-10-07 16:23:07

<a href=https://www.elefans.com/category/jswz/34/1763706.html style=求出 最长回文字符串 JAVA版本【给出编码思想"/>

求出 最长回文字符串 JAVA版本【给出编码思想

目的:在任意的字符串中求出最长的回文字符串

 

思路:(适用于任何语言)

 

1、判断当前给定的字符串是否是相同的字符串(也就是所有字符都相同),如果是直接返回了。

 

2、如果第一步没有返回,就以非第一个字符为轴,分别求出以它为轴的,双数回文字符串,和单数回文字符串的长度。

 

 3、把上述求出来的长度,和已经有的回文字符串长度对比,如果长于已经存在的回文字符串的长度,就进行赋值。

 

4、判断最后统计的回文字符串如果等于空,并且给出的字符大于0,就把第一个字符赋值给最长回文字符串,并且返回。

 

代码如下:

public class Test {public String aa(String s){char[] arr = s.toCharArray();               //把字符串转换成字符String max = "";                            //收集最长的回文字符串int k = 0;                                  //统计当前 最长回文字符串的长度 / 同时统计以当前字符串为轴的时候 双数回文字符串的长度int flag = 0;                               //0 表示 以该字符为轴的是 双数回文字符串int m = 0;                                  //int p = 0;                                  //统计以当前字符串为轴的时候 单数回文字符串的长度//如果字符串全部是一种字符的话  直接返回for(k = 0;k < arr.length-1; k++){if (arr[k] != arr[k+1])break;}if(k == arr.length -1)return s;//以非第一个字符为轴 ,来统计以它为轴   双数回文字符串 和 单数 回文字符串的长度   并且把最长的回文字符串 赋值给 maxfor(int i = 1;i < arr.length; i++){k = 0;p = 0;for (flag = 0;flag <= 1; flag++)for(int j = i-1;j >= 0; j--){if ( flag == 1 && j == i-1 )m = 0;if(flag == 0){  //双数if(i+k < arr.length)if(arr[j] == arr[i+k]){k++;}else {break;}}else {  //单数if(j >= 0 && i+m+1 < arr.length )if(arr[j] == arr[i+1+(m++)]){p++;}else {break;}}}if ( p >= k ){  // k 表示双  p表示单k = p;flag = 1;} elseflag = 0;if(flag == 0){if(max.length() < 2*k){max = "";for(int j = i-k;j < i+k; j++){max += arr[j];}}} else{if(max.length() < 2*k+1){if(i - k >= 0 && i+k <= s.length()-1){max = "";for(int j = i-k;j <= i+k; j++){max += arr[j];}}}}}if (max.equals("") && arr.length > 0)   //当输入空串和没有任何长度大于2的回转字符做的特殊处理max += arr[0];return max;}public static void main(String[] args) {Test t = new Test();//测试数据System.out.println(t.aa("lqlvciwekzxapmjxyddlaoqhfhwphamsyfwjinkfvciucjhdgwodvmnpkibumexvlsxxumvrznuuyqfavmgwfnsvfbrvqhlvhpxaqehsiwxzlvvtxsnmlilbnmvnxyxitxwoahjricdjdncvartepfpdfndxqoozkfpdmlpvshzzffsspdjzlhmamqooooor"));System.out.println(t.aa("oooooor"));System.out.println(t.aa("aba"));System.out.println(t.aa("abb"));System.out.println(t.aa("bba"));System.out.println(t.aa("aaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyyyyyyyzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxwwwwwwwwwwvvvvvvvvvvuuuuuuuuuuttttttttttssssssssssrrrrrrrrrrqqqqqqqqqqppppppppppoooooooooonnnnnnnnnnmmmmmmmmmmllllllllllkkkkkkkkkkjjjjjjjjjjiiiiiiiiiihhhhhhhhhhggggggggggffffffffffeeeeeeeeeeddddddddddccccccccccbbbbbbbbbbaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjjkkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnooooooooooppppppppppqqqqqqqqqqrrrrrrrrrrssssssssssttttttttttuuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyyyyyyyzzzzzzzzzzyyyyyyyyyyxxxxxxxxxxwwwwwwwwwwvvvvvvvvvvuuuuuuuuuuttttttttttssssssssssrrrrrrrrrrqqqqqqqqqqppppppppppoooooooooonnnnnnnnnnmmmmmmmmmmllllllllllkkkkkkkkkkjjjjjjjjjjiiiiiiiiiihhhhhhhhhhggggggggggffffffffffeeeeeeeeeeddddddddddccccccccccbbbbbbbbbbaaaa"));System.out.println(t.aa("cbbd"));System.out.println(t.aa("fttttf"));System.out.println(t.aa("eabcb"));System.out.println(t.aa("aaabaaa"));System.out.println(t.aa("aaabaaaaaa"));System.out.println(t.aa("ac"));System.out.println(t.aa(""));System.out.println(t.aa("sooos"));System.out.println(t.aa("azwdzwmwcqzgcobeeiphemqbjtxzwkhiqpbrprocbppbxrnsxnwgikiaqutwpftbiinlnpyqstkiqzbggcsdzzjbrkfmhgtnbujzszxsycmvipjtktpebaafycngqasbbhxaeawwmkjcziybxowkaibqnndcjbsoehtamhspnidjylyisiaewmypfyiqtwlmejkpzlieolfdjnxntonnzfgcqlcfpoxcwqctalwrgwhvqvtrpwemxhirpgizjffqgntsmvzldpjfijdncexbwtxnmbnoykxshkqbounzrewkpqjxocvaufnhunsmsazgibxedtopnccriwcfzeomsrrangufkjfzipkmwfbmkarnyyrgdsooosgqlkzvorrrsaveuoxjeajvbdpgxlcrtqomliphnlehgrzgwujogxteyulphhuhwyoyvcxqatfkboahfqhjgujcaapoyqtsdqfwnijlkknuralezqmcryvkankszmzpgqutojoyzsnyfwsyeqqzrlhzbc"));}}

 

更多推荐

求出 最长回文字符串 JAVA版本【给出编码思想

本文发布于:2024-02-27 20:54:39,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1766354.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:求出   回文   字符串   最长   思想

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!