字符串常见题目

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

    public String myTrim(String str){
        int start = 0;
        int end = str.length() - 1;
        while(start < end && str.charAt(start) == ' '){
            start++;
        }
        while(start < end && str.charAt(end) == ' '){
            end--;
        }
        if(start == end && str.charAt(start) == ' '){
            return "";
        }
        return str.substring(start, end + 1);
    }

2.将一个字符串反转,将字符串中指定部分进行反转。比如“abcdefg”反转为“abfedcg”。

    public String myReverse(String str, int start, int end){
        char[] charArray = str.toCharArray();
        while (start < end){
            char temp = charArray[start];
            charArray[start] = charArray[end];
            charArray[end] = temp;
            start++;
            end--;
        }
        return new String(charArray);
    }

 Note:需要加上边界条件,"str != null" 

3.获取一个字符串在另一个字符串中出现的次数。比如获取“ab”在“abskfjdlabajbalkjab”中出现的次数。

    // 三种方法
    public int myCount3(String str1, String str2){
        int count = 0;
        int index = 0;
        while (str2.indexOf(str1,index) != -1){
            count++;
            index = str2.indexOf(str1,index) + str1.length();
        }

        return count;
    }
    public int myCount2(String str1, String str2){
        int count = 0;
        while (str2.indexOf(str1) != -1){
            count++;
            str2 = str2.substring(str2.indexOf(str1) + str1.length());
        }
        return count;
    }
    public int myCount1(String str1, String str2){
        int count = 0;
        int index2 = 0;
        int len = str1.length();
        while (index2 < str2.length()){
            if (str2.charAt(index2) == str1.charAt(0)){
                String temp = str2.substring(index2,index2+len);
                if (temp.equals(str1)){
                    count++;
                    index2 += len;
                    continue;
                }
            }

            index2++;
        }
        return count;
    }

☆☆4.获取两个字符串中最大相同字串,例s1="asdafghjka", s2="aaasdfg"    他们的最大子串为"asd"  。(假设最大字串只有一个,如果有多个用list添加)

最优解思路:将短的那个串长度依次递减的字串与长串比较!

    public String mySubString(String str1,String str2){
        String longStr = str1.length() >= str2.length() ? str1 : str2;
        String shortStr = str1.length() < str2.length() ? str1 : str2;
        int len = shortStr.length();
        for (int i = 0; i < len; i++) {
            for (int x = 0,y=len-i; y <= len; x++,y++) {
                String temp = shortStr.substring(x,y);
                if (longStr.contains(temp)){ //str1.indexOf(temp) != -1
                    return temp;
                }
            }
        }
        return null;
    }

 Note:需要加上边界条件,"str != null" 

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

思路:转化为字符数组进行排序。

    public String mySort(String str){
        char[] charArray = str.toCharArray();
        Arrays.sort(charArray);
        return new String(charArray);
    }
原文地址:https://www.cnblogs.com/HuangYJ/p/13934008.html