作者:小 琛
欢迎转载,请标明出处

题目:
输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符
例如,输入str1为“ They are students.” 和str2为 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.”

题目分析:如果使用最简单多次遍历法,会导致时间复杂度极高,算法不够优化.

  1. 这里可以采用空间换时间的方法。定义一个数组,大小为256(char类型的字符为0-255),arr[256]全部初始化为0
  2. 遍历str2,将每个字符以ASSCLL码值来对应数组下标,将该下标指向内容进行++操作
  3. 遍历srr1,再次利用每个字符的ASSCLL码值对应数组下标,若该下标所指向的内容不为0,则表示str2中有该字符,删除该字符即可。
#include <iostream>
#include <string.h>
//1、输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符
//例如,输入“ They are students.” 和 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.”
void delete_str(std::string& str1,  std::string& str2)
{if (str1.empty() || str2.empty())return;size_t arr[256] = { 0 };for (auto ch : str2){arr[ch]++;}for (size_t i = 0; i < str1.size();i++){if (arr[str2[i]] != 0)str1.erase(i, 1);}
}
void text1()
{std::string str1;std::string str2;std::getline(std::cin, str1);std::getline(std::cin, str2);delete_str(str1, str2);for (auto ch : str1){std::cout << ch;}
}

反思总结:要实现一道题目解析一类题目,在字符串类型的题目中,定义数组并利用ASSCLL码值来解决问题,是常用手段,要养成惯性思维。

输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符相关推荐

  1. 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

    题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变 ...

  2. 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

    1.题目 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符. 例如,输入"They are students."和"aeiou",则删除之后的第一个字 ...

  3. 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入 ”They are students.” 和 ”aeiou” ,则删除之后的第一个字符串变成 ”Thy r stdnts.”

    题目 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入 "They are students." 和 "aeiou" ,则删除之后的第一个 ...

  4. 输入两个字符串,从第一个字符串中删除第二个字符串中的字符

    题目: 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符 比如输入第一个字符串:"They are students."              第二个字符串: &q ...

  5. python编程—输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

    题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例 如,输入"They are students."和"aeiou", 则删除之后的第一 ...

  6. C++实现输入两个字符串,从第一字符串中删除第二个字符串中所有的字符

    一定要注意一点就是: char* p是一个指针,根本没分配内存,他指向的"abc123ABC" 是只读的,不能改变,你在下面给他赋值肯定是错的 而char p[]是一个数组,已经分 ...

  7. 【Python】输入两个字符串,在第一字符串中删除第二个字符串中所包含的所有字符...

    s1 = input('s1: ') s2 = input('s2: ') for i in s1:if i in s2:s1 = s1.replace(i,'') print(s1)

  8. c语言代码,输入两个数,输出第一个数到第二个数之间所有的数

    用C语言实现,输入两个数,输出第一个数到第二个数之间包含的所有数 #include <stdio.h> int num(int x, int y); int main() {int a1, ...

  9. 从一个字符串中删除另一个字符串中出现过的字符

    http://blog.csdn.net/walkerkalr/article/details/39001155 定义一个函数,输入两个字符串,从第一个字符串中删除在第二个中出现过的所偶字符串.例如从 ...

最新文章

  1. linux里hba状态_linux查看hba卡状态
  2. 使用SDL打造游戏世界之入门篇 - 6
  3. hadoop程序实例
  4. 中标麒麟linux系统安装打印机_中标软件+天津麒麟=中国国产操作系统新旗舰
  5. mate10鸿蒙系统,华为将发布 MatePad Pro:搭载鸿蒙系统,麒麟 9000 处理器
  6. 微软拆分 VS Code 中 Python 扩展,部分功能可独立下载
  7. 利用python进行数据分析—七、绘图与可视化—matplotlib与seaborn
  8. Lambda表达式公共拼接函数(原创)
  9. python方向是干什么的_Python有哪些应用方向 在数据分析上有什么优势
  10. 你确定懂?彻底搞懂 控制反转(IoC Inversion of Control )与依赖注入(DI Dependency Inversion Principle )
  11. 软件及其公司篇--项目管理(七)
  12. unity粒子编辑器详解
  13. tp1900芯片对比7621a_MT7621A /MT7620N / MT7620A单频双频刷机教程(区别于高通芯片刷机过程)...
  14. #优质代码# Map按Value降序排序,Value相同时按Key排序
  15. hotmail服务器密码已修改密码,修改过密码的hotmail无法在mac和iphone上登陆和收取邮件...
  16. gdb x命令_Coresight及GDB使用介绍 - 大海在倾听
  17. gif动图文件太大无法上传?教你一招在线调整动图大小
  18. 被资本和巨头炒上风口的无人便利店,会成为下一个无人货架吗?
  19. XYNUOJ 1190 行车路程
  20. 12月3日DAMA-CDGA/CDGP数据治理认证考试报名

热门文章

  1. 安卓手机访问 linux系统文件下载,安卓手机跑起完整的Linux系统
  2. 【Python基础】①求两个整数的和与平均值
  3. W: GPG 错误:http://ppa.launchpad.net lucid Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY FAF69C646FF368B7的问题
  4. 店铺的安全问题一定要注意
  5. Unity递归遍历给定物体的所有子物体
  6. Python——遍历整个列表
  7. 编程挑战之三角形内切圆与外接圆源码
  8. $GOPATH not set
  9. 《结合DDD讲清楚编写技术方案的七大维度》再讨论
  10. 这些年--这些Android