zoukankan      html  css  js  c++  java
  • 在字符串中删除特定字符

    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 }
  • 相关阅读:
    两人合作
    JUnit单元测试
    结对编程-——游戏五子棋
    使用Junit等工具进行单元测试
    软件工程
    两人项目---打飞机的游戏
    使用Junit等工具进行单元测试
    软件工程
    使用Junit等工具进行单元测试
    软件工程
  • 原文地址:https://www.cnblogs.com/aalex/p/5020088.html
Copyright © 2011-2022 走看看