#include <iostream>
using namespace std;
//-----------------solution1 ------------// so complexed
// 思路:遍历数组,跟后面的元素比
void removeDuplicates(string &str){
for( int i=0 ;i<str.length()-1;i++){
for(int j=i+1;j<str.length();j++){
if(str[i]==str[j]){
int skip =1;
for(int k=j;k<str.length();k++){
// 如果后面紧挨的元素跟前面重复的话,略过。
if(k!=j & str[j]==str[k]){
skip++;
}
}
for(int k=j;k<str.length();k++){
str[k]=str[k+skip];
}
}
}
}
}
//------solution2-------------------------------//
//思路:遍历数组,用一个下标记录不重复的元素位置,跟前边已经填充好的数组值相比较。
void removeDuplicates2(string &str){
if(str=="")return;
if(str.length()<2) return;
int tail=1;
for(int i=1;i<str.length();++i){
int j;
for(j=0;j<tail;++j){
if(str[i]==str[j]){
break;
}
}
if(j == tail){
str[tail]=str[i];
++tail;
}
}
str[tail]=' ';
std::cout<<str<<std::endl;
}
int main(){
//------------------testcases-----------------//
string a="";
a="aaa";
a=" "; //fail
a="hellokitty";
a="aaaaaaaabbbbbbbb";
removeDuplicates(a);
}