JAVA练习String类

一、字符串数组排序

1.给定一个字符串数组,按照字典顺序进行从小到大排序。

例如:将: {"nba","abc","cba","zz","ihg","hehe"};中的字符串按照字典顺序大小排列。

public class StringTest {
    public static void main(String[] args) {
        String[] arr = {"nba","abc","cba","zz","ihg","hehe"};
        printArray(arr);      //输出字符串
        sortString(arr);      //排序
        printArray(arr);
    }
    private static void printArray(String[] arr) {
        for(int i = 0;i<arr.length;i++){
            if (i != arr.length -1 ){
                System.out.print(arr[i]+",");
            }
            else{
                System.out.println(arr[i]);
            }
        }
    }


    private static void sortString(String[] arr) {         //使用简单选择排序
        for(int i = 0;i<arr.length-1;i++){
            for(int j= i+1;j<arr.length;j++ ){
                if (arr[i].compareTo(arr[j])>0){
                    swap(arr,i,j);
                }
            }
        }
    }

    private static void swap(String[] arr, int i, int j) {
        String temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }
}

 

2.一个子串在整串中出现的次数

例如:字符串:"ngbnbajhjnnbakygdnba"中关键字Key:"nba"出现的次数。

思路:使用String类的indexOf方法获取关键字是否在字符串中存在,若存在则返回角标位置,使用获取的角标加上关键字长度,从新的起始位置来判断关键字是否在剩余的子串中存在。使用循环结构判断。

public class StringTest2 {
    public static void main(String[] args) {
        String arr = "ngbnbajhjnnbakygdnba";
        String key = "nba";
        int count = getKeyStringCount(arr,key);
        System.out.println("count = "+count);
    }

    private static int getKeyStringCount(String arr, String key) {   
        int count =0;
        int index = 0;
        while((index = arr.indexOf(key,index))!=-1){  //当字符串中从index角标开始没有key子串是退出循环
            index = index + key.length();         //新的循环,从上一个发现子串的角标位置开始查询key子串
            count++;
        }
        return count;
    }
}

 

3.最大相同子串

例如:字符串:str1:“tanfaidasdbabcdgdsalkdm”

       str2:“hdkvasabcdsdafmvmoae”

   在str1与str2中寻找最大的相同的子串。

思路:

(1)观察较短字符串本身是否为较字符串的子串,若是,则最大子串为较短字符串本身。

(2)若不是,将较短字符串逐步递减,取得其不同子串,使用其不同的子串来判断是否在较长字符串中存在。

public class StringTest3 {
    public static void main(String[] args) {
        String str1 = "tanfaidasdbabcdgdsalkdm";
        String str2 = "hdkvasabcdsdafmvmoae";

        String s = getMaxSubString(str1,str2);
        System.out.println("Max_String = "+s);
    }

    private static String getMaxSubString(String str1, String str2) {
        String max,min;
        max = (str1.length()>str2.length())?str1:str2;
        min = (max.equals(str1))?str2:str1;     //判断两字符串的长度,使用max,min存储字符串

        for (int i=0;i<min.length();i++){
            for(int a=0,b=min.length()-i;b<min.length();a++,b++){
                String sub = min.substring(a,b);    
                if(max.indexOf(sub)>0){
                    return sub;
                }
            }
        }
        return null;
    }
}

 

4.模拟一个tirm功能的方法,去除字符串两端的空白

思路:从字符串两端循环判断下一个角标的元素是否为空格,当都遇到不为空的字符时停止且返回角标,同时头标记的角标不能大于尾标记。

public class StringTest4 {
    public static void main(String[] args) {
        String str = "    __ahbh__  ";
        str = myTirm(str);
        System.out.println(str);
    }

    private static String myTirm(String str) {
        int start =0 ,end = str.length()-1;
        while(start<=end&&str.charAt(start)==' '){
            start++;
        }
        while(start<=end&&str.charAt(end)==' '){
            end--;
        }
        return str.substring(start,end+1);
    }
}

 

import com.sun.scenario.effect.impl.sw.java.JSWColorAdjustPeer;

public class StringTest {
public static void main(String[] args) {
String[] arr = {"nba","abc","cba","zz","ihg","hehe"};
printArray(arr); //输出字符串
sortString(arr); //排序
printArray(arr);
}
private static void printArray(String[] arr) {
for(int i = 0;i<arr.length;i++){
if (i != arr.length -1 ){
System.out.print(arr[i]+",");
}
else{
System.out.println(arr[i]);
}
}
}


private static void sortString(String[] arr) { //使用简单选择排序
for(int i = 0;i<arr.length-1;i++){
for(int j= i+1;j<arr.length;j++ ){
if (arr[i].compareTo(arr[j])>0){
swap(arr,i,j);
}
}
}
}

private static void swap(String[] arr, int i, int j) {
String temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}

posted @ 2021-04-08 21:02  金芒果决斗  阅读(169)  评论(0)    收藏  举报