题目链接:L1-011 A-B
目录:
题目要求:
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
I love GPLT! It's a fun game!
aeiou
输出样例:
I lv GPLT! It's fn gm!
思路:
1.用 getlin() 输入字符串,好处在于可以输入空格
2.遍历s1和s2,如果遇到s1与s2数组中的值相同时候,将s1中的值标记为-1
3.遍历s1,如果遇到-1情况跳过输出
目的是从用户那里接收两个字符串 s1
和 s2
,然后删除 s1
中所有与 s2
中的字符相同的字符,并输出修改后的 s1
。
让我们逐步分析代码:
头文件和命名空间:这包括了几乎所有的标准库,并使用了 std
命名空间。
#include <bits/stdc++.h>
using namespace std;
主函数:这是程序的入口点。
int main()
{
....
}
变量声明:这里声明了两个字符串变量 s1
和 s2
。
string s1,s2;
接收输入:使用 getline 函数从标准输入(通常是键盘)读取两行,并分别存储在s1和s2中
getline(cin , s1);
getline(cin , s2);
删除相同的字符:这里使用了两层循环。外层循环遍历 s1 中的每个字符,内层循环遍历 s2 中的每个字符。如果 s1 中的某个字符与 s2 中的任何字符匹配,则该字符在 s1 中被替换为 -1。
for(int i = 0; i < s1.size(); i ++)
{
for(int j = 0; j < s2.size(); j++)
{
if(s1[i] == s2[j])
s1[i] = -1;
}
}
输出修改后的字符串: 这个循环遍历 s1,并只输出那些没有被替换为 -1 的字符。
for(int j = 0; j < s1.size(); j ++)
if(s1[j] != -1)
cout << s1[j];
结束程序:主函数返回0,表示程序正常结束。
return 0;
注意: 这里使用 -1
来标记 s1
中的字符可能不是一个好主意,但是更加偏向于初学者
-1
是一个有效的char
值。这意味着如果s1
原始包含-1
,则它会被错误地删除。- 更安全的方法是使用一个布尔数组或向量来跟踪哪些字符应该被删除,而不是直接在字符串中标记它们。
- 如果
s2
包含重复字符,那么s1
中的相应字符可能会被多次标记为-1
,但这并不影响最终的结果。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s1,s2;
getline(cin , s1);
getline(cin , s2);
for(int i = 0; i < s1.size(); i ++)
{
for(int j = 0; j < s2.size(); j++)
{
if(s1[i] == s2[j])
s1[i] = -1;
}
}
for(int j = 0; j < s1.size(); j ++)
if(s1[j] != -1)
cout << s1[j];
return 0;
}
测试结果:
最后
不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~
给大家准备的学习资料包括但不限于:
Python 环境、pycharm编辑器/永久激活/翻译插件
python 零基础视频教程
Python 界面开发实战教程
Python 爬虫实战教程
Python 数据分析实战教程
python 游戏开发实战教程
Python 电子书100本
Python 学习路线规划
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!