702.连接两个字符串中的不同字符
连接两个字符串中的不同字符。 给出两个字符串, 你需要修改第一个字符串,将所有与第二个字符串中相同的字符删除, 并且第二个字符串中不同的字符与第一个字符串的不同字符连接。 样例 给出 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 }优质内容筛选与推荐>>