郑州建站系统在线咨询,巫山集团网站建设,合浦建设局网站,山西省住房与城乡建设部网站求一个有限长度字符串 最长的有序可重复子串package acm;/*** author qxl*/
public class SequenceCharMax {/*** 输入一可重复的整数数组#xff0c;求最长升序数组长度** 比如#xff1a;* 输入#xff1a;[1, 2, 3, 4]* 输出#xff1a;4* 输入#xff1a;[1, 5, 2, 3,…
求一个有限长度字符串 最长的有序可重复子串package acm;/*** author qxl*/
public class SequenceCharMax {/*** 输入一可重复的整数数组求最长升序数组长度** 比如* 输入[1, 2, 3, 4]* 输出4* 输入[1, 5, 2, 3, 3, 4]* 输出5* 输入[1, 5, 3, 4]* 输出3* param args*/// 或者利用堆栈实现public static void main(String[] args) {int[] randomNum {1, 2, 3, 4, 5, 6};// sequenceMaxLength(randomNum);getMaxLength(randomNum);}/*** 有一种建立模型的思想先将问题进行拆分拆出简单的模型实现简单的模型后在进行组合* param array*/public static void sequenceMaxLength(int [] array){//首先实现一次循环for(int i0;iarray.length;i){}/****思路首先是实现第一次循环*****///首先实现一次循环 相当于移动窗口int movFlagarray.length;//子串起始位置 i1;int startIndex1;//存储当前最后一位有序值int currentMaxValarray[0];//存储组合元素集合String[] combinCollectionnew String[movFlag];// movflag 完成移动窗口的从 movflag 2到 array.length的移动 一次完成 首位元素和剩余元素的组合操作while ((movFlag--)0){//存储拼接值记录StringBuffer restAppendnew StringBuffer();//拼接组合的第一个元素restAppend.append(array[0]);for(int jstartIndex;jarray.length;j ){if(currentMaxValarray[j]){currentMaxValarray[j];restAppend.append(array[j]);}}//存储一次组合队列combinCollection[movFlag]restAppend.toString();//循环一次startIndex 就会加1startIndex;//重置 curentMaxVal 为组合首位元素currentMaxValarray[0];}for(int i0;icombinCollection.length;i){System.out.println(combinCollection[i]);}}/*** 获取有序最大长度值* param array*/public static void getMaxLength(int [] array){int maxLength0;/****思路首先是实现第一次循环*****/for(int i0;iarray.length;i){//首先实现一次循环 相当于移动窗口int movFlagarray.length-i;//子串起始位置 i1;int startIndexi1;//存储当前最后一位有序值,假设每次寻的第一位就是最后一位有序值int currentMaxValarray[i];//存储组合元素集合String[] combinCollectionnew String[movFlag];// movflag 完成移动窗口的从 movflag 2到 array.length的移动 一次完成 首位元素和剩余元素的组合操作while ((movFlag--)0){//存储拼接值记录StringBuffer restAppendnew StringBuffer();//拼接组合的第一个元素restAppend.append(array[i]);for(int jstartIndex;jarray.length;j ){if(currentMaxValarray[j]){currentMaxValarray[j];restAppend.append(array[j]);}}//存储一次组合队列combinCollection[movFlag]restAppend.toString();//循环一次startIndex 就会加1startIndex;//重置 curentMaxVal 为组合首位元素currentMaxValarray[i];}for(int k0;kcombinCollection.length;k){System.out.println(第i次combinCollection[k]);if(maxLengthcombinCollection[k].length()){maxLengthcombinCollection[k].length();}}}System.out.println(有序值最大的长度为maxLength);}}