API-Stringtest

来源:互联网 发布:平安 云计算 编辑:程序博客网 时间:2024/06/17 01:56

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;    }
原创粉丝点击