Day024 常见字符串算法题

常见算法题目


1.模拟一个trim方法,去除字符串两端的空格。

//1.模拟一个trim方法,去除字符串两端的空格。
public class Test1 {
    public static void main(String[] args) {
        String str1="   has a dog   ";
        String str2=mytrim(str1);
        System.out.println("*********"+str2+"*******");
    }

    public static String mytrim(String str){
        if(str==null||str.equals("")){
            return "";
        }

        int startIndex=0;
        int endIndex=str.length();

        char[] strCharArray=str.toCharArray();

        for(int i=0;i<strCharArray.length;i++){
            if(!Character.isSpaceChar(strCharArray[i])){
                startIndex=i;
                break;
            }

            if(i==strCharArray.length-1){
                return "";
            }
        }



        for(int j=strCharArray.length-1;j>=0;j--){
            if(!Character.isSpaceChar(strCharArray[j])){
                endIndex=j+1;
                break;
            }
        }

        return str.substring(startIndex,endIndex);
    }
}

输出结果:

*********has a dog*******

2.将一个字符串进行反转。将字符串指定部分进行反转。

比如“abcdefg”反转为“abfedcg”。

/*
2.将一个字符串进行反转。将字符串指定部分进行反转。
比如“abcdefg”反转为“abfedcg”。
 */
public class Test2 {
    public static void main(String[] args) {
        String str1 = new String("abcdefg");
        String str2=reverse(str1,2,5);
        System.out.println(str2);
    }

    public static String reverse(String str, int startIndex, int endIndex) {
        if (str == null || str.equals("")) {
            return "";
        }

        char[] strArr = str.toCharArray();

        if (startIndex > str.length() || startIndex < 0 || endIndex < startIndex || endIndex > str.length()) {
          return "索引有误";
        }

        for (int i = startIndex, j = endIndex-1; i < j; i++, j--) {
            char tmp = strArr[i];
            strArr[i] = strArr[j];
            strArr[j] = tmp;
        }

        return new String(strArr);
    }
}

输出结果:

abedcfg

3.获取一个字符串在另一个字符串中出现的次数。

比如:获取“ab”在abkkcadkabkebkabkskab“中出现的次数。

/*
3.获取一个字符串在另一个字符串中出现的次数。

比如:获取“ab”在abkkcadkabkebkabkskab“中出现的次数。
 */
public class Test3 {
    public static void main(String[] args) {
        String str1="abkkcadkabkebkabkskab";
        int count=getCount(str1,"ab");
        System.out.println(count);

    }

    public static int getCount(String str1,String str2){
        int count=0;

        if(str2.length()>str1.length()){
            return -1;
        }

        for (int i = 0; i <=(str1.length()-str2.length()) ; i++) {
            if(str1.startsWith(str2,i)){
                count++;
            }
        }

        return count;
    }
}

输出结果

4

4.获取两个字符串中最大的相同子串。

比如:str1=“abcwertthelloyuiodef”;str2=“cvhellobnm”
提示:将短的那个串进行长度依次递减的子串与较长的串比较。

/*
4.获取两个字符串中最大的相同子串。

比如:str1=“abcwertthelloyuiodefabcde”;str2=“cvhellobnmabcde”
提示:将短的那个串进行长度依次递减的子串与较长的串比较。
 */
public class Test4 {
    public static void main(String[] args) {
        String str1="abcwertthelloyuiodefabcde";
        String str2="cvhellobnmabcde";
        String[] sameArr=findSameStr(str1,str2);
        System.out.println(Arrays.toString(sameArr));
    }

    public static String[] findSameStr(String maxStr,String minStr){

        if(maxStr.length()<minStr.length()){
            String temp=minStr;
            minStr=maxStr;
            maxStr=temp;
        }

        StringBuilder sameStr=new StringBuilder();

        for (int i=minStr.length();i>0;i--){
            for(int j=0;j+i<=minStr.length();j++){
                String sub=minStr.substring(j,j+i);
                if(maxStr.contains(sub)){
                    sameStr.append(sub+",");
                }
            }
            if(sameStr.length()!=0){
                break;
            }
        }


        return sameStr.toString().split(",");
    }
}

输出结果

[hello, abcde]

5.对字符串中字符进行自然顺序排序。

提示:

  1. 字符串变成字符数组。

  2. 对数组排序,选择,冒泡,Arrays.sort();

  3. 将排序后的数组变成字符串。

public class Test5 {
    public static void main(String[] args) {
        String str1="fdafsadaka234kak1";
        String str2=sortString(str1);
        System.out.println(str2);
    }

    public static String sortString(String str){
        char[] strArr=str.toCharArray();

        Arrays.sort(strArr);

        return new String(strArr);
    }
}

输出结果

1234aaaaaddffkkks

](https://www.bilibili.com/video/BV1Kb411W75N?p=477&spm_id_from=pageDriver)***

上一篇:微控制器(MCU)架构介绍


下一篇:2021-05-29