问题标题: 酷町堂:1463

0
0
已解决
尹宗鑫
尹宗鑫
新手守护
新手守护

1463   山重水复

题目描述 Description

古语有云:“山重水复疑无路,柳暗花明又一村。” 重复有时候并不是好事,会遮掩住我们所需要的信息。现有一个字符串,其中可能有一些重复的字符,请去掉该字符串中重复字符,使任意一个出现的字符只保留一个,并按照原来的顺序输出去重过后的字符串。

输入描述 Input Description

输入为一行,为一个待去重的字符串(长度不超过1000)。

输出描述 Output Description

输出为一行,为去重过后的字符串。

样例输入 Sample Input

 

zxyzzaabcdxy

样例输出 Sample Output

 

zxyabcd


0
已采纳
丁振轩
丁振轩
资深光能
资深光能

string s;
    定义 a[256]={0};
    getline(cin,s);
    for(int i=0;i<s.size();i++){
        a[(int)s[i]]++;
    }
    for(int i=0;i<s.size();i++){
        if (a[(int)s[i]]>0) {
            输出<<s[i];
            a[(int)s[i]]=0;
        }
    }

0
0
张睿杰
张睿杰
初级天翼
初级天翼

这题并没有那么复杂,短短几行搞定

for(int i=0;i<s.size();i++) b[s[i]]=true;//把读入的字符串下表存进数组里加加,就是ASLL码值
for(int i=0;i<s.size();i++)
{
    if(b[s[i]]==true)//判断是否存在这个单词
    {
        cout<<s[i];//存在就输入
        b[s[i]]=false;//然年后标记为不存在就OK了
    }
}

 

我要回答