输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符
作者:小 琛
欢迎转载,请标明出处
题目:
输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符
例如,输入str1为“ They are students.” 和str2为 “aeiou”, 则删除之后的第一个字符串变为“Thy r stdnts.”
题目分析:如果使用最简单多次遍历法,会导致时间复杂度极高,算法不够优化.
- 这里可以采用空间换时间的方法。定义一个数组,大小为256(char类型的字符为0-255),arr[256]全部初始化为0。
- 遍历str2,将每个字符以ASSCLL码值来对应数组下标,将该下标指向内容进行++操作
- 遍历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码值来解决问题,是常用手段,要养成惯性思维。
输入两个字符串,从第一个字符串中删除第二个字符串中所有的字符相关推荐
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入"They are students."和"aeiou",则删除之后的第一个字符串变 ...
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
1.题目 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符. 例如,输入"They are students."和"aeiou",则删除之后的第一个字 ...
- 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入 ”They are students.” 和 ”aeiou” ,则删除之后的第一个字符串变成 ”Thy r stdnts.”
题目 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例如,输入 "They are students." 和 "aeiou" ,则删除之后的第一个 ...
- 输入两个字符串,从第一个字符串中删除第二个字符串中的字符
题目: 输入两个字符串,从第一个字符串中删除第二个字符串中的所有字符 比如输入第一个字符串:"They are students." 第二个字符串: &q ...
- python编程—输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
题目描述: 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符.例 如,输入"They are students."和"aeiou", 则删除之后的第一 ...
- C++实现输入两个字符串,从第一字符串中删除第二个字符串中所有的字符
一定要注意一点就是: char* p是一个指针,根本没分配内存,他指向的"abc123ABC" 是只读的,不能改变,你在下面给他赋值肯定是错的 而char p[]是一个数组,已经分 ...
- 【Python】输入两个字符串,在第一字符串中删除第二个字符串中所包含的所有字符...
s1 = input('s1: ') s2 = input('s2: ') for i in s1:if i in s2:s1 = s1.replace(i,'') print(s1)
- c语言代码,输入两个数,输出第一个数到第二个数之间所有的数
用C语言实现,输入两个数,输出第一个数到第二个数之间包含的所有数 #include <stdio.h> int num(int x, int y); int main() {int a1, ...
- 从一个字符串中删除另一个字符串中出现过的字符
http://blog.csdn.net/walkerkalr/article/details/39001155 定义一个函数,输入两个字符串,从第一个字符串中删除在第二个中出现过的所偶字符串.例如从 ...
最新文章
- linux里hba状态_linux查看hba卡状态
- 使用SDL打造游戏世界之入门篇 - 6
- hadoop程序实例
- 中标麒麟linux系统安装打印机_中标软件+天津麒麟=中国国产操作系统新旗舰
- mate10鸿蒙系统,华为将发布 MatePad Pro:搭载鸿蒙系统,麒麟 9000 处理器
- 微软拆分 VS Code 中 Python 扩展,部分功能可独立下载
- 利用python进行数据分析—七、绘图与可视化—matplotlib与seaborn
- Lambda表达式公共拼接函数(原创)
- python方向是干什么的_Python有哪些应用方向 在数据分析上有什么优势
- 你确定懂?彻底搞懂 控制反转(IoC Inversion of Control )与依赖注入(DI Dependency Inversion Principle )
- 软件及其公司篇--项目管理(七)
- unity粒子编辑器详解
- tp1900芯片对比7621a_MT7621A /MT7620N / MT7620A单频双频刷机教程(区别于高通芯片刷机过程)...
- #优质代码# Map按Value降序排序,Value相同时按Key排序
- hotmail服务器密码已修改密码,修改过密码的hotmail无法在mac和iphone上登陆和收取邮件...
- gdb x命令_Coresight及GDB使用介绍 - 大海在倾听
- gif动图文件太大无法上传?教你一招在线调整动图大小
- 被资本和巨头炒上风口的无人便利店,会成为下一个无人货架吗?
- XYNUOJ 1190 行车路程
- 12月3日DAMA-CDGA/CDGP数据治理认证考试报名
热门文章
- 安卓手机访问 linux系统文件下载,安卓手机跑起完整的Linux系统
- 【Python基础】①求两个整数的和与平均值
- W: GPG 错误:http://ppa.launchpad.net lucid Release: 由于没有公钥,无法验证下列签名: NO_PUBKEY FAF69C646FF368B7的问题
- 店铺的安全问题一定要注意
- Unity递归遍历给定物体的所有子物体
- Python——遍历整个列表
- 编程挑战之三角形内切圆与外接圆源码
- $GOPATH not set
- 《结合DDD讲清楚编写技术方案的七大维度》再讨论
- 这些年--这些Android