从字符串中删除出现的子串
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); } }
相关文章推荐
- C和指针之删除字符串第一次出现的子串
- 删除一字符串的出现的字符子串
- 删除字符串中出现次数最少的子串
- 定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”
- 10-2. 删除字符串中的子串(20)
- [算法] 定义一个函数,删除字符串中所有重复出现的字符。
- PTA基础题目5-29删除字符串中的子串
- 寻找字符串中连续出现次数最多的子串
- 求一个字符串中连续出现次数最多的子串
- OJ--------删除字符串中出现次数最少的字符
- 求一个字符串中连续出现次数最多的子串
- 删除字符串中出现次数最少的字符
- 求一个字符串中连续出现次数最多的子串
- 字符串问题---去掉字符串中连续出现k个0的子串
- 求一个字符串中连续出现次数最多的子串
- 每天一道算法题(25)——字符串中连续出现次数最多的子串
- 删除字符串中的子串
- 从第一个字符串中删除第二个字符串中出现的所有字符
- 计算字符串str中某子串substring出现的次数
- 寻找一个字符串中连续出现次数最多的子串