连接两个字符串中的不同字符。
给出两个字符串, 你需要修改第一个字符串,将所有与第二个字符串中相同的字符删除, 并且第二个字符串中不同的字符与第一个字符串的不同字符连接。
样例
给出 s1 = aacdb, s2 = gafd
返回 cbgf
给出 s1 = abcs, s2 = cxzca;
返回 bsxz
c++11中规定字符串可以直接相加,字符串对象可以加字符串常量,可以加字符。
string::find()函数很好用,这里恰好可以做一个总结:
共有下面四种函数原型:
四种函数原型返回值都是size_t,即字符串的一个索引,如果找到返回索引,如果找不到返回-1,即string::npos,打印出来是:4294967295。直接用npos就可以了。
string (1) //可以直接查找字符串对象,
size_t find (const string& str, size_t pos = 0) const noexcept;
c-string (2) //从类型的字符串
size_t find (const char* s, size_t pos = 0) const;
buffer (3) //从pos开始查找s的前n个字符
size_t find (const char* s, size_t pos, size_type n) const;
character (4) //查找字符
size_t find (char c, size_t pos = 0) const noexcept;
我们这里用的是最后一个,定义一个新的string对象res,然后先遍历s1,在s2中寻找s1的每个字符,找不到的话就把这个字符加到res上,然后对s2做同样的操作,就能找到s2中和s1不同的字符了,这样最后加起来就只最终的res。
string concatenetedString(string &s1, string &s2) {
string res;
if(s2.size()==0)
return s1;
if(s1.size()==0)
return s2;
for(int i=0;i<s1.size();i++)
{
if(s2.find(s1[i])==string::npos)
res+=s1[i];
}
for(int i=0;i<s2.size();i++)
{
if(s1.find(s2[i])==string::npos)
res+=s2[i];
}
return res;
// write your code here
}
over
网友评论