首页 > 学院 > 开发设计 > 正文

在字符串中删除特定字符

2019-11-14 14:54:28
字体:
来源:转载
供稿:网友

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

 

思路:

1. 位图法

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

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

位图法:

 1 package com.rui.microsoft; 2  3 public class Test63_DelCharsFromString { 4  5     public static void main(String[] args) { 6         Test63_DelCharsFromString app = new Test63_DelCharsFromString(); 7         String target = "They are students"; 8         String source = "Taeiou"; 9         app.del(target,source);10     }11     12     void del(String target, String source){13         int bitT = 0;14         int bitS = 0;15         16         for(char c: target.toCharArray()){17             bitT |= 1 << c;18         }19         20         for(char c: source.toCharArray()){21             bitS |= 1 << c;22         }23         24         System.out.PRintln(Integer.toBinaryString(bitT));25         System.out.println(Integer.toBinaryString(bitS));26         27         int inter = bitT ^ bitS;28         System.out.println(Integer.toBinaryString(inter));29         30         for(char c : target.toCharArray()){31             if((inter & (1<<c)) != 0){32                 System.out.print(" " + c);33             }34         }35     }36 }

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表