首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java-63-在字符串中剔除特定的字符

2012-08-26 
java-63-在字符串中删除特定的字符public class DeleteSpecificChars {/** * Q 63 在字符串中删除特定的字

java-63-在字符串中删除特定的字符

public class DeleteSpecificChars {/** * Q 63 在字符串中删除特定的字符 * 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 * 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.” */public static void main(String[] args) {String strSource="They are students";String strDelete="aeiou";String result=deleteSpecificChars(strSource,strDelete);System.out.println(result);}/* * 1.use a 'hashtable' to record the letters to be delete * 2.use two pointers to shrink the source string: * replace the letter to delete with the following letter not to delete */public static String deleteSpecificChars(String strSource,String strDelete){char[] charSource=strSource.toCharArray();char[] charDelete=strDelete.toCharArray();int sLen=strSource.length();int dLen=strDelete.length();int[] exist=new int[256];for(int i=0;i<dLen;i++){char letter=charDelete[i];exist[letter]++;}int pSlow=0,pFast=0;while(pFast<sLen){char curLetter=charSource[pFast];if(exist[curLetter]==0){//should not delete charSource[pSlow]=charSource[pFast];pSlow++;}pFast++;}return new String(charSource,0,pSlow);//unlike c/c++,we can only form a string in this way}}
1 楼 neyshule 2012-06-27   这个算法也不对阿,只覆盖前面的话肯定会有重复阿,c++可以因为用pointer,这边不行。 2 楼 neyshule 2012-06-27   我觉得你不能就把c++翻译过来吧。。。。。。

热点排行