API-Stringtest

Q1:获取两个字符串的最大相同子串

public class StringTest_1 {

    public static void main(String[] args) {
        /*
         * 获取两个字符串的最大相同子串。
         * 思路:
         * 1,先明确两个字符串的长短,在长串中判断短串是否存在。
         * 2,存在,则说明短串就是最打得相同子串
         *    不存在,就将短串按照长度递减的方式,获取短串中的子串并到长串中判断。
         * 3,一旦存在,便结束查找。
         */
        String s1="dajsashdasuditcastddd";
        String s2="dsadsffitcastdfdfh";

        String maxSubString=getMaxSubstring(s1,s2);
        System.out.println("maxSubString:"+maxSubString);

    }

    private static String getMaxSubstring(String s1, String s2) {
        String max,min;
        //明确哪个是长串哪个是短串。
        max=(s1.length()>s2.length())?s1:s2;
        min=max.equals(s1)?s2:s1;

        for (int i = 0; i < min.length(); i++) {
            for (int start = 0,end=min.length()-i; end <=min.length(); start++,end++) {
                String temp=min.substring(start, end);

                if(max.contains(temp)){
                    return temp;
                }

            }

        }
        return null;
    }

}

Q2:对字符串中字符进行自然顺序排序

如”sdfjewqac”—->”acdefjqsw”

public class StringTest_2 {

    public static void main(String[] args) {
        /*
         * 对字符串中字符进行自然顺序排序
         * "sdfjewqac"---->"acdefjqsw"
         * 思路:
         * 1,把字符串转成数组
         * 2,对数组进行排序
         * 3,把数组转成字符串
         */
        String s="sdfjewqac";
        System.out.println(s);
        String s1=sortStringByChar(s);
        System.out.println(s1);
    }

    public static String sortStringByChar(String str) {
        // 1,将字符串转成数组,转成字符数组
//      char[] chs=str.toCharArray();
        char[] chs=getArray(str);

        //2,对数据进行排序
        /*for (int i = 0; i < chs.length; i++) {
            for (int j = 0; j < chs.length-i-1; j++) {
                if(chs[j]>chs[j+1]){
                    char temp=chs[j];
                    chs[j]=chs[j+1];
                    chs[j+1]=temp;
                }
            }
        }*///冒泡排序
        sort(chs);
        //3,对排好序的数据转成字符串
        return new String(chs);

    }

    private static void sort(char[] chs) {
        Arrays.sort(chs);

    }

    private static char[] getArray(String str) {
        return str.toCharArray();
    }

}

Q3:String类的trim()的介绍及代码实现

public class StringTest_3 {

    public static void main(String[] args) {
        /*
         * String类的trim().
         * 1,写代码演示该方法的使用。
         * 2,trim什么时候使用?用户名,文本框输入,获取用户文本时。
         * 3,模拟一下和trim功能一样的函数,参阅源码。
         */
        String str="    chenshuang    ";
        String s2=str.trim();
        String s1=myTrim(str);
        System.out.println(s1);
    }
    /*
     * 模拟trim功能。
     */
     public static String myTrim(String str){
         //1,定义两个变量,一个记录头的位置,一个记录尾的位置
         int start=0;
         int end=str.length()-1;

         //2,移动截取的首尾角标
         while(start<end&&str.charAt(start)==' '){
             start++;
         }
         while(start<end&&str.charAt(end)==' '){
             end--;
         }
         return str.substring(start, end+1);
     }
}

源码实现:

public String trim() {
        int len = value.length;
        int st = 0;
        char[] val = value;    /* avoid getfield opcode */

        while ((st < len) && (val[st] <= ' ')) {
            st++;
        }
        while ((st < len) && (val[len - 1] <= ' ')) {
            len--;
        }
        return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值