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
    }

优质内容筛选与推荐>>
1、《个体软件过程》读书笔记
2、mangodb驱动编译
3、javascript函数定义表达式和函数声明的区别
4、Input 只能输入数字,数字和字母等的正则表达式
5、C++多线程编程二


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号