//字符串去重复 网上
#include <iostream>
#include <string>
using namespace std;
int main() {
string str;
cin >> str;
int a[256] = { 0, 0 };
int strLen = str.size();
for (int i = 0; i < strLen; ++i) {
a[str[i]]++;
}
int i, j;
i = j = 0;
for (int i = 0; i < strLen; ++i) {
if (a[str[i]] >= 0) {
a[str[i]] = -1;
swap(str[i], str[j]);
j++;
}
}
str = str.substr(0, j);
cout << str << endl;
system("pause");
return 0;
}
//自己写的版本
字符串去重复
#include"stdafx.h"
#include<iostream>
#include<string>
#include<unordered_map>
#include<vector>
#include<queue>
using namespace std;
const int maxn = 1000;
int main() {
bool flag[maxn] = {false};
char c[maxn],d[maxn];
cin >> c;
int len = strlen(c);
int j = 0;
for (int i = 0;i < len;i++) {
if (flag[c[i]] == false) {
d[j++]=c[i];
}
flag[c[i]]=true;
}
d[j] = '\0';
cout << d;
return 0;
}
//版本三
#include"stdafx.h"
#include<iostream>
#include<string>
#include<unordered_map>
#include<vector>
#include<queue>
using namespace std;
const int maxn = 1000;
int main() {
string a ;
cin>>a;
bool flag[maxn] = { false };
int len = a.size();
string::iterator it = a.begin();
for (int i = 0;i < len;i++) {
int b = *it;
if (flag[b] == true) {
a.erase(it);
}
else
{
flag[b] = true;
it++;
}
}
cout << a;
}