(LintCode字符删除)给出两个字符串 str 和 sub,你的任务是在 str 中完全删除那些在 sub 中存在的字符。

(LintCode字符删除)给出两个字符串 str 和 sub,你的任务是在 str 中完全删除那些在 sub 中存在的字符。

借鉴于学习:老铁咖啡:跟LintCode的算法题杠上了(1905字符删除)
main方法

public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入字符串1:");
        String str1 = sc.nextLine();
        System.out.print("请输入字符串2:");
        String sub1 = sc.nextLine();
        String str = characterDelet(str1,sub1);
        System.out.println("输出:" + str);
 }

方法一

List<String> charList = new ArrayList<>();
for (int i = 0; i < sub.length(); i++){
    String cha = sub.substring(i,i+1);
    charList.add(cha);
}
for (String cha : charList){
    str = str.replace(cha,"");
}

方法二

StringBuffer sb = new StringBuffer();
Boolean hasChar = false;
for (int i = 0; i < str.length(); i++){
     for (int j = 0; j < sub.length(); j++){
         if (str.charAt(i) == sub.charAt(j)){
               hasChar = true;
                break;
         }else {
                 hasChar = false;
         }
    }
    if (!hasChar){
         sb.append(str.charAt(i));
          hasChar = false;
      }
 }
        return sb.toString();

方法三

StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++){
     if (sub.contains(StringUtils.nvl(str.charAt(i)))){
          continue;
     }else{
           sb.append(str.charAt(i));
     }
 }
return sb.toString();

方法四

StringBuffer sb = new StringBuffer();
Set s = new LinkedHashSet();
for (int i = 0; i < sub.length(); i++){
     s.add(sub.charAt(i));
}
for (int i = 0; i<str.length();i++){
     if (!s.contains(str.charAt(i))){
          sb.append(str.charAt(i));
     }
}
return sb.toString();

方法五

int[] temp = new int[256];
for (int i = 0; i < sub.length(); i++){
     temp[sub.charAt(i)]++;
}
StringBuffer ans = new StringBuffer("");
for (int i = 0; i < str.length(); i++) {
     if (temp[str.charAt(i)] == 0) {
         ans.append(Character.toString(str.charAt(i)));
     }
}
 return ans.toString();

结果
在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值