题目描述
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
样例 1:
输入: str=”They are students”,sub=”aeiou”
输出: ”Thy r stdnts”
注意事项
String contains spaces(包含空格)
1 ≤ len(str),len(sub) ≤105
思路+代码
第一反应就是双循环遍历,但是根据提示的长度,感觉会很费时间甚至超时,
所以空间换时间,用一个hash数组记录要删除的字符(对应的ASCII码)。遍历原字符串,把不删的字符拼成一个新字符串返回。
public class Solution {
/**
* @param str: The first string given
* @param sub: The given second string
* @return: Returns the deleted string
*/
public String CharacterDeletion(String str, String sub) {
//hash数组
int[] res = new int[10000];
//StringBuilder的拼接速度快
StringBuilder sb = new StringBuilder();
//记录删除的字符
for (int i = 0; i < sub.length(); i++) {
res[sub.charAt(i)] ++;
}
//拼接字符串
for (int i = 0; i < str.length(); i++) {
if(res[str.charAt(i)]>0){
continue;
}else{
sb.append(str.charAt(i));
}
}
//返回新字符串
return sb.toString();
}
}
结果:

本文介绍了一种高效的方法来实现从一个字符串中删除另一个字符串中所有字符的功能。通过使用哈希数组记录要删除的字符,并利用StringBuilder进行快速字符串拼接,避免了传统双循环带来的效率问题。
1041

被折叠的 条评论
为什么被折叠?



