package com.sort;
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);
}
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) {
charSource[pSlow] = charSource[pFast];
pSlow++;
}
pFast++;
}
return new String(charSource, 0, pSlow);
}
}
package com.two;
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);
}
public static String deleteSpecificChars(String strSource, String strDelete) {
char[] charSource = strSource.toCharArray();
char[] delSource = strDelete.toCharArray();
int delen = delSource.length;
int souLen = charSource.length;
int[] newC = new int[266];
for (int i = 0; i < delen; i++) {
char c = delSource[i];
newC[c]++;
}
char[] newChar = new char[255];
int k = 0;
for (int j = 0; j < souLen; j++) {
char ch = charSource[j];
if (newC[ch] == 0) {
newChar[k++] = ch;
}
}
return new String(newChar, 0, k);
}
}