找出最长字符串的问题
import java.util.Scanner;
//在一个字符中找到由同一个字符组成的连接的最长字符串,输出
public class Text {
?public static void main(String[] args) {
??//控制台输入
????????? Scanner input=new Scanner(System.in);
????????? System.out.println("请输入一个字符串:");
???????? String s=input.next();
????????
????????
????????? int max=1;??? //最长有多长
?????????
????????? char[] ch= s.toCharArray();?? //将控制台输入的字符串拆开来,一个个的装到字符数组中
?????????
????????? String[] len=new String[ch.length];?? //将有相邻相等的字符拼接起来,装起来,只有一个也装
?????????
?????????? int [] index=new int[ch.length];??? //与Sting数组匹配,对应下标相同的串字符的长度
??????????
????????? int indexmax=0;????? //index数组中最大数字,即字符最长的数组下标
?????????
????
?????????? //循环ch数组
????????????? for(int i=0;i<ch.length;i++){
?????????????????? if(i==ch.length-1){??? //长度若为1,则不必要下面判断了
??????????? ???? len[i]=ch[i]+"";
??????????? ???? index[i]=1;
??????????? ???? break;
??????????? ??? }else? {
??????????? ???? len[i]=ch[i]+"";???? //将此时下标的装进数组,准备拼接相同的
??????????? ???? for(int j=i+1;j<ch.length;j++){
??????????? ????? ? if(ch[i]==ch[j]){
??????????? ????? ??
??????????? ????? ??len[i]+=ch[j]+"";?? //累加拼接
??????????? ????? ??max++;????? //长度累加
??????????? ????? ? }else{
??????????? ????? ?? break;
??????????? ????? ? }?
??????????????????????? }
??????????? ??? index[i]=max;?? //将长度记录下来
??????????? ??? max=1;???? //重新记录,下一个字符
??????????????? }
?????????? }
?????????????
????????????? int maxlength=index[0];?? //长度数组中的第一个设置为最长
???????????
????????????? if(index.length>1){
??????????? for(int m=1;m<index.length;m++){
??????????? ?
??????????? ?if(index[m]>maxlength){
??????????? ??maxlength=index[m];?? //若下一个比前一个大,则设置此时的为最长的
??????????? ??
??????????? ??indexmax=m;???????? //记录此时下标
??????????? ??
??????????? ?}
??????????? ?
??????????? ?
??????????????? }
??????????? }?
????????????? System.out.println("最长的一串相等字符串为:"+len[indexmax]+" 长度为:"+index[indexmax]);
?}
}