在字符串中删除特定字符

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

63.在字符串中删除特定的字符。

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”, 则删除之后的第一个字符串变成”Thy r stdnts.”。

思路:

1. 位图法

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

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

位图法:

1packagecom.rui.microsoft;23publicclassTest63_DelCharsFromString {45publicstaticvoidmain(String[] args) {6Test63_DelCharsFromString app =newTest63_DelCharsFromString();7String target = "They are students";8String source = "Taeiou";9app.del(target,source);10}1112voiddel(String target, String source){13intbitT = 0;14intbitS = 0;1516for(charc: target.toCharArray()){17bitT |= 1 <<c;18}1920for(charc: source.toCharArray()){21bitS |= 1 <<c;22}2324System.out.PRintln(Integer.toBinaryString(bitT));25System.out.println(Integer.toBinaryString(bitS));2627intinter = bitT ^bitS;28System.out.println(Integer.toBinaryString(inter));2930for(charc : target.toCharArray()){31if((inter & (1<<c)) != 0){32System.out.print(" " +c);33}34}35}36}

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航