读书人

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

发布时间: 2012-08-26 16:48:06 作者: rapoo

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++翻译过来吧。。。。。。

读书人网 >编程

热点推荐