String类实现replace()方法

String类实现replace() 方法主要是用先匹配子串内容是否在目标串中出现,若出现将其修改为自定义的字符串。

replace(目标串,子串,新子串)。可以再细分为若新子串和子串的长度相等和不相等两种。

1.新子串和子串的长度相等

代码:

public  static  String  replaceChar(String s,String t,String r){
    String string = null;
    try {
        char s1 [] = s.toCharArray();
        char t1 [] = t.toCharArray();
        char r1 [] = r.toCharArray();
        int i = 0,j = 0;
        while(i<s1.length  && j<t1.length){
            if(s1[i] == t1[j]){
                 i++;
                 j++;
                 if(j==t1.length){
                     int a = 0;
                     for (int k = i-t1.length; k <i ; k++) {
                         s1 [k] = r1[a];
                         a++;
                     }
                     j=0;
                 }
            }else{
                i = i-j+1;
                j = 0;

            }
        }
        string = new String(s1);

    }catch (Exception e){
        e.printStackTrace();
    }
     return string;
}

2.新子串和子串的长度不相等(对1的扩展)

代码:

public static String Replacechar(String s, String t, String r) {
    String string = "";
    int time = 0;  //匹配次数计数器
    try {
        char s1[] = s.toCharArray();
        char t1[] = t.toCharArray();
        int i = 0, j = 0;

        while (i < s1.length && j < t1.length) {
            if (s1[i] == t1[j]) {
                i++;
                j++;
                if (j == t1.length) {
                    time++;
                    string += r;
                    j = 0;
                }

            } else {
                i = i - j + 1;
                j = 0;
                string += String.valueOf(s1[i - 1]);
            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }if(time==0){
        System.out.println("子串没有出现在目标串中,直接返回目标串!!!");
        return  s;
    }else {
        return string;
    }
}

相比之下,代码一时间复杂度是大于代码二的。

上一篇:每日编程(16)


下一篇:142. 环形链表 II