您的位置:首页 > 其它

在字符串中删除特定字符

2015-12-04 17:48 260 查看
63.在字符串中删除特定的字符。
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”。

思路:

1. 位图法

将两个字符串分别转换成bitmap 然后对他们做异或xor运算,得到的结果即为排除了第二个字符串的所有字符, 然后对该结果依次与原字符串的所有字符进行与运算,结果不为零的即为所得 恩 位图真是个好东西啊。。。时间复杂度o(n+m) 花在了遍历字符串并构造位图上

2. 遍历字符串,构造hashTable,然后匹配要删除的字符

位图法:

package com.rui.microsoft;

public class Test63_DelCharsFromString {

public static void main(String[] args) {
Test63_DelCharsFromString app = new Test63_DelCharsFromString();
String target = "They are students";
String source = "Taeiou";
app.del(target,source);
}

void del(String target, String source){
int bitT = 0;
int bitS = 0;

for(char c: target.toCharArray()){
bitT |= 1 << c;
}

for(char c: source.toCharArray()){
bitS |= 1 << c;
}

System.out.println(Integer.toBinaryString(bitT));
System.out.println(Integer.toBinaryString(bitS));

int inter = bitT ^ bitS;
System.out.println(Integer.toBinaryString(inter));

for(char c : target.toCharArray()){
if((inter & (1<<c)) != 0){
System.out.print(" " + c);
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: