去掉一个字符串中重复的字符,只保留第一次出现的

例:

输入字符串:qweqweasdlmn

输出字符串:qweasdlmn

#include <iostream>
#include<cstring>
using namespace std;

string remove_same(string str)
{
    size_t subpos,sublen;
    string temp_str;
    temp_str.append(str,0,1);
    for(subpos=1;subpos<str.length();subpos++)
    {
        for(sublen=0;sublen<temp_str.length();sublen++)
        {
            if(str[subpos]==temp_str[sublen])
                break;
        }
        if(sublen==temp_str.length())
            temp_str.append(str,subpos,1);
    }
    return temp_str;
}

int main() {
    string instr;
    cout<<"输入一个字符串"<<endl;
    getline(cin,instr);//防止遇到空格就结束 
    string new_str=remove_same(instr);
    cout<<new_str<<endl;
   
}

remove_same子函数用来实现对重复字符的判断,并得到没有重复字符的结果字符串

思路:创建一个temp_str用来存放结果字符串,最开始temp_str里面只有instr的第一个字符,sub_pos用来记录instr里下一个要进行判断的字符的位置,除了第一个字符,每个instr的字符都要进行判断,判断的方式是将每个字符与temp_str里的每个字符进行比较,若没有重复的,则将该字符添加到temp_str的后面,若有重复的,跳到下一个字符判断,直到所有的字符都判断完毕,最后存入temp_str的字符一定是没有重复元素的,输出即可。

程序运行结果:第二行是输入字符串,第三行是去除重复字符串的结果,可以看到重复空格也被去除了。

去掉一个字符串中重复的字符,只保留第一次出现的