栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

两个字符串的最大长度子串

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

两个字符串的最大长度子串

题目

求两个字符串的最大长度子串,如:字符串"abcdefhellosadjvdb"与字符串"helloworld"的最大长度子串为"hello"

解题思路

指定两个指针,分别指向长度最小的字符串的头部和尾部,然后依次遍历它的每个子串,长度最大的字符串通过调用contains(子串)来判断,如果返回值为true,则跳出循环,此时的子串即两个字符串的最大长度子串(思想类似求两个数的最大公约数)

代码实现
public class StringDemo2 {
    
    public String getMaxSameString(String str1, String str2) {
        if (str1 == null || str2 == null) return null;
        String maxString = (str1.length() >= str2.length()) ? str1 : str2;
        String minString = (str1.length() < str2.length()) ? str1 : str2;
        int length = minString.length();
        for (int i = 0; i < length; i++) {
            for (int x = 0, y = length - i; y <= length; x++, y++) {
                String subStr = minString.substring(x, y);
                if (maxString.contains(subStr)) return subStr;
            }
        }
        return null;
    }

    public static void main(String[] args) {
        StringDemo2 stringDemo2 = new StringDemo2();
        System.out.println(stringDemo2.getMaxSameString("abcdefhellosadjvdb;", "helloworld"));
    }
}
执行结果
D:JavaJDKbinjava.exe "-javaagent:D:IntelliJ IDEA 2019.3.3libidea_rt.jar=3297:D:IntelliJ IDEA 2019.3.3bin" -Dfile.encoding=UTF-8 -classpath D:JavaJDKjrelibcharsets.jar;D:JavaJDKjrelibdeploy.jar;D:JavaJDKjrelibextaccess-bridge-64.jar;D:JavaJDKjrelibextcldrdata.jar;D:JavaJDKjrelibextdnsns.jar;D:JavaJDKjrelibextjaccess.jar;D:JavaJDKjrelibextjfxrt.jar;D:JavaJDKjrelibextlocaledata.jar;D:JavaJDKjrelibextnashorn.jar;D:JavaJDKjrelibextsunec.jar;D:JavaJDKjrelibextsunjce_provider.jar;D:JavaJDKjrelibextsunmscapi.jar;D:JavaJDKjrelibextsunpkcs11.jar;D:JavaJDKjrelibextzipfs.jar;D:JavaJDKjrelibjavaws.jar;D:JavaJDKjrelibjce.jar;D:JavaJDKjrelibjfr.jar;D:JavaJDKjrelibjfxswt.jar;D:JavaJDKjrelibjsse.jar;D:JavaJDKjrelibmanagement-agent.jar;D:JavaJDKjrelibplugin.jar;D:JavaJDKjrelibresources.jar;D:JavaJDKjrelibrt.jar;D:JavaWorkSpaceJavaSenioroutproductionday04 com.atguigu.com.StringDemo2
hello

Process finished with exit code 0

改进-适用于两个字符串中有多个长度相等的最大长度子串
package com.atguigu.com;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class StringDemo2 {
    
    public List getMaxSameString1(String str1, String str2) {
        List list = new ArrayList<>();
        if (str1 == null || str2 == null) return null;
        String maxString = (str1.length() >= str2.length()) ? str1 : str2;
        String minString = (str1.length() < str2.length()) ? str1 : str2;
        int length = minString.length();
        for (int i = 0; i < length; i++) {
            for (int x = 0, y = length - i; y <= length; x++, y++) {
                String subStr = minString.substring(x, y);
                if (maxString.contains(subStr)) list.add(subStr);
            }
            if (list.size() != 0) break;
        }
        return list;
    }

    public static void main(String[] args) {
        StringDemo2 stringDemo2 = new StringDemo2();
        System.out.println(stringDemo2.getMaxSameString1("abcdefhellosadjvdb;", "helloworldabcde").toString());
    }
}

执行结果
D:JavaJDKbinjava.exe "-javaagent:D:IntelliJ IDEA 2019.3.3libidea_rt.jar=3781:D:IntelliJ IDEA 2019.3.3bin" -Dfile.encoding=UTF-8 -classpath D:JavaJDKjrelibcharsets.jar;D:JavaJDKjrelibdeploy.jar;D:JavaJDKjrelibextaccess-bridge-64.jar;D:JavaJDKjrelibextcldrdata.jar;D:JavaJDKjrelibextdnsns.jar;D:JavaJDKjrelibextjaccess.jar;D:JavaJDKjrelibextjfxrt.jar;D:JavaJDKjrelibextlocaledata.jar;D:JavaJDKjrelibextnashorn.jar;D:JavaJDKjrelibextsunec.jar;D:JavaJDKjrelibextsunjce_provider.jar;D:JavaJDKjrelibextsunmscapi.jar;D:JavaJDKjrelibextsunpkcs11.jar;D:JavaJDKjrelibextzipfs.jar;D:JavaJDKjrelibjavaws.jar;D:JavaJDKjrelibjce.jar;D:JavaJDKjrelibjfr.jar;D:JavaJDKjrelibjfxswt.jar;D:JavaJDKjrelibjsse.jar;D:JavaJDKjrelibmanagement-agent.jar;D:JavaJDKjrelibplugin.jar;D:JavaJDKjrelibresources.jar;D:JavaJDKjrelibrt.jar;D:JavaWorkSpaceJavaSenioroutproductionday04 com.atguigu.com.StringDemo2
[hello, abcde]

Process finished with exit code 0

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/678340.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号