南狂小子 2024-08-01 17:52 采纳率: 88.9%
浏览 7
已结题

1103: 【基础】字符串连接

#include<iostream>
#include<string>
using namespace std;
int main( ) {
    string s;
    getline(cin,s);
    string s1;
    getline(cin,s1);
    int n=s.size();
    int v=0;
    for(int i=0;i<n;i++){
        v=s1.find(s[i],0);
        if(v!=-1){
            s1.erase(0,v);
        }
    }
    s+=s1;
    cout<<s;
    return 0;
}

1103: 【基础】字符串连接
内存限制:32 MB时间限制:1.000 S
评测方式:文本比较命题人:外部导入
提交:94解决:44
提交提交记录统计露一手!
题目描述
给出两个字符串,将它们进行拼接,拼接过程中每个字符只允许出现一次。
如:两个字符串s1="adeab",s2="fcadex",那么连接时s1留下adeb(第2个a出现过了,就不要了),再将s2连接上来形成adebfcx,两个字符串中重复的都过滤掉,但剩余的顺序不要调整。
输入
两行,每行一个只包含小写英文字母的字符串。
输出
一行,连接后的字符串。
样例输入 复制
abc
daaeb
样例输出 复制
abcde

为什么我只输出abcb

  • 写回答

1条回答 默认 最新

  • fengbizhe 2024-08-01 20:37
    关注

    earse函数里的参数应该是迭代器,不能直接是那些变量,要写成s1.begin()+v,不然可能会出错,还有你那样写,不能处理一些情况
    比如就题目这个:s=abc,s1=daaeb,
    改正earse后,会是abcdae,会还剩下一个a没删,
    我改了下,这么写就对了
    对了,还有就是s=abc,s1=deeab,e是s没有的,那e是只留一个,还是两个
    如果只留一个,还得写个自身去重,我这没有处理这个情况

    
    #include<iostream>
    #include<string>
    using namespace std;
    int main( ) {
        string s;
        getline(cin,s);
        string s1;
        getline(cin,s1);
        int n=s.size();
        int n1=s1.size();
        int v=0;
        for(int i=0;i<n;i++){
        v=0;
        while(v<n1)
        {
            v=s1.find(s[i],v);
            if(v!=-1){
                s1.erase(s1.begin()+v);
                n1--;
            }
            else
            break;    
        }
        }
        s+=s1;
        cout<<s;
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月1日
  • 已采纳回答 8月1日
  • 创建了问题 8月1日

悬赏问题

  • ¥15 有关类的报错,在模块里调用另一个模块的方法下的变量时出错
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格
  • ¥15 kali linux用wget archive.kali.org/archive-key.asc指令下载签名无效(失败)
  • ¥15 openHarmony 利用c++程序在dayu210开发板上实现拉取RTSP视频流并且在屏幕上显示
  • ¥15 GD32H757的can通信配置
  • ¥20 nist随机数测试的问题
  • ¥20 帮我解决这个项目,thank you各位程序员
  • ¥15 哪位能用ea软件做一下,有偿