package su.interview;import java.util.Arrays;/** * 從字串中刪除出現的子串 * @author Toy * */public class String_01 {/** * 在逐個掃描主串中的字元是否在子串中實現 * @param fstr * @param sub * @return */public String deleteSubChar_01(String fstr,String sub){StringBuilder s=new StringBuilder();for(int i=0;i<fstr.length();i++){String curr=fstr.charAt(i)+"";if(!sub.contains(curr)){s.append(curr);}}return s.toString();}/** * 用指標,直接覆蓋出現過的字串 * @param fstr * @param sub * @return */public String deleteSubChar_02(String fstr,String sub){char[] arr = fstr.toCharArray();int k=0;for(int i=0;i<arr.length;i++){if(!sub.contains(arr[i]+"")){arr[k++]=arr[i];}}return String.copyValueOf(arr, 0, k);}/** * 以計數數組思想為基礎,將子字串散列 * @param fstr * @param sub * @return */public String deleteSubChar_03(String fstr,String sub){char[] arr = fstr.toCharArray();int[] smap=new int[256];Arrays.fill(smap, 0);for(int i=0;i<sub.length();i++){smap[sub.charAt(i)]=smap[sub.charAt(i)]+1;}int k=0;for(int i=0;i<arr.length;i++){if(smap[arr[i]]==0){arr[k++]=arr[i];}}return String.copyValueOf(arr, 0, k);}public static void main(String[] arge){ String fstr="They are students";String sub="aeiou";String_01 s=new String_01();String r = s.deleteSubChar_01(fstr, sub);System.out.println(r);r = s.deleteSubChar_02(fstr, sub);System.out.println(r);r = s.deleteSubChar_03(fstr, sub);System.out.println(r);}}