您的位置:首页 > 其它

从字符串中删除出现的子串

2011-09-05 10:26 190 查看
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);

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: