最大子字符串问题

问题描述:输入任意多个字符串。当输入exit时结束程序。输出最大的子字符串。
要求:输入的字符串中,每个字符再次出现时记录其值,为该字符串长度。

例如:输入字符串:abcad 则最大子字符串为:abca
样例:

        输入:abcabc
        输出:abca

                  bcab
                  cabc

       输入:abac
       输出:aba

       输入:exit
       退出程序
public class BestString{

	public static void main(String[] args){
		int recordSum=1;
		int recordI=0;
		/**
		*循环输入字符串,当输入exit是退出循环。
		*/
		while(true){
			System.out.println("please input the String,if you input 'exit' will quit!! ");
			java.util.Scanner scanner=new java.util.Scanner(System.in);
			String str=scanner.nextLine();
			String str2="exit";
			if(str.equals(str2))
			{
				System.out.println("已退出!");
				return;
			}
			int strLength=str.length();
			int[] strRecord=new int[strLength+1];
			/**
			*定义一个记录数组strRecord,用来记录字符串每个位置上子串的大小
			*例如:abcab 则strRecord[0]=4,strRecord[1]=4,strRecord[2]=1....
			*/
			for(int i=0;i<strLength;i++){
				recordI=i;
				for(int j=i+1;j<strLength;j++){
					if(str.charAt(i)!=str.charAt(j)){					
						recordSum++;
						if(j==strLength-1){
							strRecord[i]=1;
							recordSum=1;
							break;
						}
					}
					if(str.charAt(i)==str.charAt(j)){
						strRecord[i]=recordSum+1;
						recordSum=1;
						break;
					}
				}
				if(i==strLength-1){
					strRecord[i]=1;
				}
			}
			/**
			*找到记录数组中,最大的子串值
			*
			*/
			int sum=strRecord[0];
			int flag=0;
			for(int i=0;i<strLength;i++){
					if(sum<strRecord[i]){
						sum=strRecord[i];
					}			
			}
			/**
			*如果有多个子串相等,则都输出。
			*/
			for(int i=0;i<strLength;i++){
				if(sum==strRecord[i]){
					flag=i;
					for(int j=flag;j<sum+flag;j++){
						System.out.print(str.charAt(j));
					}	
					System.out.println();
				}
			}		
		}
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值