文章目录
  1. 1. 题目
  2. 2. 解析
  3. 3. 代码

题目

删除指定的字符串
比如They are students 和 aeiou 则删除之后剩下Thy r stdnts

解析

关于此类查找之类的如果能往位图上靠就是最快速的,本题也可以,一个字符是8位,也就是会出现256中情况,所以现在只需要用一个256长度的位图就可以来判断当前字符是否存在待删除的字符字典中。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/**
* 使用类似位图法的方式来做 复杂度是O(n+m)
* 因为一个int有32位,如果再要压缩的话 只需要使用8个int数组即可,本代码偷懒使用256个长度
* @param sStr
* @param dStr
* @return
*/

public static String deleteSpecifyString(String sStr,String dStr)
{

int[] dict=new int[256];//每个字符8位 则会有256种情况
for(int i=0;i<dStr.length();i++)
{
dict[dStr.charAt(i)]=1;
}

char[] cs=new char[sStr.length()];
int t=0;
for(int i=0;i<sStr.length();i++)
{
if(dict[sStr.charAt(i)]==0)
{
//表示这个字符串不需要删除
cs[t++]=sStr.charAt(i);
}

}

return String.valueOf(cs);
}

测试代码如下

1
2
3
4
5
6
public static void main(String[] args) {
String sStr="They are students";
String dStr="aeiou";

System.out.println(deleteSpecifyString(sStr,dStr));
}

Thy r stdnts

本作品采用[知识共享署名-非商业性使用-相同方式共享 2.5]中国大陆许可协议进行许可,我的博客欢迎复制共享,但在同时,希望保留我的署名权kubiCode,并且,不得用于商业用途。如您有任何疑问或者授权方面的协商,请给我留言

文章目录
  1. 1. 题目
  2. 2. 解析
  3. 3. 代码