查找字符串的最长子字符串

211 阅读2分钟

描述:

   假如有一个字符串是trg32er43terjjk它的最长子字符串是terjjk

查找字符串中最长子字符串

package testClass;
import java.util.ArrayList;
import java.util.List;

/**
 * 获取最长字符串
 * duay
 * 20220325
 */
public class MaxLengthString {
    //存放最大子字符串的下标数组
    List<Integer> maxList = new ArrayList<>();
    //将是字符串的下标添加到数组中
    List<Integer> index = new ArrayList<>();

    public static void main(String[] args) {
        MaxLengthString ml = new MaxLengthString();
        String moreStr = ml.moreLine("das12sa\nhd2ji\n2sd0def\nsd2sadsada9d");

        System.out.println(moreStr);
    }

    //输出多行
    public String moreLine(String str){
        String[] strs = str.split("\n");
        String string = "";
        //判断一行还是多行
        if(strs.length == 1){
            string = getMaxSonSting(str);
        }else{//多行
            //输出每一行
            for(int i = 0; i < strs.length; i++){
                //显示最长的字符串
                String sonStr = getMaxSonSting(strs[i]);
                string += sonStr + "\n";
                maxList = new ArrayList<>();
            }
        }
        return string;
    }

    //获取最长的子字符串
    public String getMaxSonSting(String str){
        char[] chars = charArray(str);
        findMaxSonString(chars);
        String sonStr = "";
        for(int i = 0; i < maxList.size(); i++){
            sonStr += chars[maxList.get(i)];
        }
        return sonStr;
    }

    //找到最长的子字符串
    public void findMaxSonString(char[] chars){
        for(int i = 0; i < chars.length; i++){
            boolean result = Character.toString(chars[i]).matches("[A-Za-z]");
            if(result == true){
                index.add(i);
            }else {
                if(index.size() > maxList.size()){
                    maxList = index;
                    index = new ArrayList<>();
                }
                index = new ArrayList<>();
            }
        }
        if(index.size() > maxList.size()){
            maxList = index;
        }
        index = new ArrayList<>();
    }

    //将其中一个父字符串转化为字符数组
    public char[] charArray(String strOne){
        char[] chars = strOne.toCharArray();
        return chars;
    }

}

查找字符串中最长子字符串的长度

package testClass;

/**
 * 查找字符串的最长子字符串的长度
 * duay
 */
public class MaxLengthStringNumber {
    //最大子字符串的长度
    int maxString;
    //连续子字符串的长度
    int strLength;

    public static void main(String[] args) {
        MaxLengthStringNumber ms = new MaxLengthStringNumber();
        String num = ms.moreLine("das12sa\nhd2ji\n2sd0def\nsd2sadsada9d");
        System.out.println("字符串的子字符串的最长数据:" + num);
    }

    public String moreLine(String str){
        String[] strs = str.split("\n");
        String num = "";
        //判断输入的是一行还是多行
        if(strs.length == 1){
            //获取最长子字符串的长度
            String maxSonStringLength = String.valueOf(getSonStringMaxLength(str));
            num = maxSonStringLength;
        }else{//多行
            //输出每行
            for(int i = 0; i < strs.length; i++){
                //获取最长的子字符串的长度
                String maxSonStringLength = String.valueOf(getSonStringMaxLength(strs[i]));
                num += maxSonStringLength + "\n";
                strLength = 0;
                maxString = 0;
            }
        }
        return num;
    }

    //获取最长的子字符串的长度
    public int getSonStringMaxLength(String str){
        char[] chars = charArray(str);
        for(int i = 0; i < chars.length; i++){
            boolean result = Character.toString(chars[i]).matches("[A-Za-z]");
            if(result == true){
                strLength++;
            }else{
                maxString = Math.max(maxString, strLength);
                strLength = 0;
            }
            maxString = Math.max(maxString, strLength);
        }
        return maxString;
    }

    //将其中一个父字符串转化为字符数组
    public char[] charArray(String strOne){
        char[] chars = strOne.toCharArray();
        return chars;
    }
}

将上面的两个结果合并打印

package testClass;

import java.util.List;

public class FindStringResult {
    public static void main(String[] args) {
        result();
        System.out.println("------------------------------------------------------------------------------------------");
        result2();
    }

    public static void result(){
        MaxLengthStringNumber ms = new MaxLengthStringNumber();
        String num = ms.moreLine("das12sa\nhd2ji\n2sd0def\nsd2sadsada9d");
        MaxLengthString ml = new MaxLengthString();
        String moreStr = ml.moreLine("das12sa\nhd2ji\n2sd0def\nsd2sadsada9d");
        System.out.print(num);
        System.out.println();
        System.out.print(moreStr);
    }

    public static void result2(){
        String res = "";
        MaxLengthStringNumber ms = new MaxLengthStringNumber();
        String num = ms.moreLine("das12sa\nhd2ji\n2sd0def\nsd2sadsada9d");
        MaxLengthString ml = new MaxLengthString();
        String moreStr = ml.moreLine("das12sa\nhd2ji\n2sd0def\nsd2sadsada9d");
        String[] numString = num.split("\n");
        String[] stringStr = moreStr.split("\n");
        for (int i = 0; i < num.split("\n").length; i++){
            String row = numString[i] + "  " + stringStr[i];
            res += row + "\n";
        }
        System.out.println(res);
    }
}

如果愿意加微信群一块讨论学习研究技术:Day9884125