标签:字符 20 String int s2 s1 flag Subtraction string
题目
Given two strings S1 and S2 , S=S1 −S2 is defined to be the remaining string after taking all the characters in S2 from S1 . Your task is simply to calculate S1 −S2 for any given strings. However, it might not be that simple to do it fast.
Input Specification:
Each input file contains one test case. Each case consists of two lines which gives S1 and S2 , respectively. The string lengths of both strings are no more than 104 . It is guaranteed that all the characters are visible ASCII codes and white space, and a new line character signals the end of a string.
Output Specification:
For each test case, print S1 −S2 in one line.
Sample Input:
They are students.
aeiou
Sample Output:
Thy r stdnts.
解析
-
所谓
s1 - s2
就是从s1
中去除出现在s2
中的字符,输出剩余部分。 -
所以可以逐个判断
s1
的字符,判断其是否在s2
中出现,若未出现则输出,否则跳过即可。 -
为了操作简单,使用一个布尔数组
flag[256]
,ascii
字符也就是0-255
,所以遍历一次s2
,将flag[s2[i]]
设置为true
即表示当前字符在s2
中出现过。
代码
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int main() {
string s1, s2;
// 原字符串中包含空格,使用getline
getline(cin, s1);
getline(cin, s2);
int len1 = s1.length(), len2 = s2.length();
bool flag[256] = {false};
// 在s2中出现的字符,在s1中剔除
for (int i = 0; i < len2; ++i) flag[s2[i]] = true;
// 逐个字符判断,若未在s2中出现则输出
for (int i = 0; i < len1; ++ i)
if (!flag[s1[i]]) cout << s1[i];
return 0;
}
标签:字符,20,String,int,s2,s1,flag,Subtraction,string 来源: https://www.cnblogs.com/codervivi/p/13232322.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。