输入一行字符串,找出出现的相同且长度最长的字符串,输出它及其首字母的置比如:“yyabcdagaerabceg”答案应该是abc

//输入一行字符串,找出出现的相同且长度最长的字符串,输出它及其首字母的置比如:“yyabcdagaerabceg”答案应该是abc

想法是把字符串切分成多个子串,而子串是从原串长度-1的长度开始,依次递减,然后看原串中是否出现子串多次,如果有跳出循环直接输出

public class FindMaxLengthOfTheSameString {
public static void main(String[] args) {
    String test="gaerabcjierabcer";
    int length=test.length();
    int flag=1;
    String resultString=null;
    for(int i=length-1;i>0&&flag!=0;i--)//flag用于跳出两层循环
        for(int j=0;j<length-i+1;j++)
        {
            String tempString=test.substring(j, j+i);//依次取出子串
            int n1=test.indexOf(tempString);
            int n2=test.lastIndexOf(tempString);
            if(n1!=n2)//比较是否出现在不同位置
            {
                flag=0;
                resultString=tempString;
                break;
            }
        }
    System.out.println(resultString);
}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值