在字符串中删除特定字符

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 }
时间: 2024-08-05 22:18:17

在字符串中删除特定字符的相关文章

36.在字符串中删除特定的字符

http://zhedahht.blog.163.com/blog/static/25411174200801931426484/ 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变成"Thy r stdnts.". 分析:这是一道微软面试题.在微软的常见面试题中,与字符串相关的题目占了很大的一部分,因为写程序操作字符串能很好的反映我们的

【编程题目】在字符串中删除特定的字符

63.在字符串中删除特定的字符(字符串).题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”. 我的思路:先扫描第一个字符串,判断是否是第二的字符串的字符,是则跳过,记录跳过多少个,后面的不被删除的就前移. /* 63.在字符串中删除特定的字符(字符串). 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符. 例如,输入”They are s

在字符串中删除特定的字符

题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"I am lavor_zl."和"I love you.",则删除之后的第一个字符串变成"amar_z".要求相对于第一个字符串的长度n时间复杂度为O(n). 解题思路:用一个bool数组保存是否在第二个字符串中出现的所有字符,数组下标表示字符,这个数组的长度为256,因为C/C++中字符总共有256个.遍历第一个字符串,用一个指针或数组下标access来表示当前访问第

c之PAT刷体--字符串-01--从字符串中找到特定字符

字符串-01. 在字符串中查找指定字符(15) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 白洪欢(浙江大学) 输入一个字符串S,再输入一个字符c,要求在字符串S中查找字符c.如果找不到则输出"Not found":若找到则输出字符串S中从c开始的所有字符. 输入格式: 输入在第1行中给出一个不超过80个字符长度的.以回车结束的非空字符串:在第2行中给出一个字符. 输出格式: 在一行中按照题目要求输出结果. 输入样例

java 删除字符串中的特定字符

/** * Delete any character in a given String. * @param inString the original String * @param charsToDelete a set of characters to delete. * E.g. "az\n" will delete 'a's, 'z's and new lines. * @return the resulting String */ public static String

Python基础练习-004-提取字符串中的特定字符

已知一个字符串"axbyczdq", 如何得到"abcd" 分析过程:取出奇数位的字符再拼接,但是在python中,index从0开始,所以取偶数位.(学习重点:字符串与列表之间的相互转换) 原文地址:https://www.cnblogs.com/piaopiao-emmm/p/10064606.html

从字符数组中删除特定字符

#include<stdio.h> int main() { char str[100],c; int j,k; printf("please input a string:"); gets(str); printf("\nEnter a character:"); c=getchar(); for(j=k=0;str[j]!='\0';j++) if(str[j]!=c) str[k++]=str[j]; str[k]='\0'; printf(&qu

【lua】lua string.match 和 string.split 从字符串中寻找特定字符串并保存

local string = "{1,2,3,4}" local traString=string.match(string , "%d+,%d+,%d+,%d+") --此时tranString = "1,2,3,4",去掉"{","}" string = string.split(tranString , ",") string = {1,2,3,4} string[1]=1 str

java去除字符串中的特定字符

public static void updateFileNames(String url, String index){ File file = new File(url); //判断文件目录是否存在,且是文件目录,非文件 if(file.exists() && file.isDirectory()){ File[] childFiles = file.listFiles(); String path = file.getAbsolutePath(); for(File childFil