输入:
wouehfpwinrgierngvipjpoposjef80293u-92u480]=0i\=r2\tif]-jp]k
输出:
w: 2
o: 3
u: 3
e: 3
h: 1
f: 3
p: 5
i: 5
n: 2
r: 3
g: 2
v: 1
j: 3
s: 1
8: 2
0: 3
2: 3
9: 2
3: 1
-: 2
4: 1
]: 3
=: 2
\: 2
t: 1
k: 1
hvs34tk
/*
* 查找最长不重复字串
* GC
* 2019-8-25
*/
#include<iostream>
using namespace std;
#define DEBUG 1
void findTheOnlyOne(char* p, char*& only_str){
static int MAX_LEN=1000;
int i, j;
char* c = new char[MAX_LEN];
c[0] = '\0';
int* count = new int[MAX_LEN];
for (i = 0; p[i] != '\0'; i++){
for (j = 0; c[j] != '\0'; j++){
if (c[j] == p[i]){
count[j] += 1;
break;
}
}
if (c[j] == '\0'){//说明是没有在c中找到相同的字符
if (j + 1>=MAX_LEN){
cout << "out of array" << endl;
}
c[j] = p[i];
count[j] = 1;
c[j + 1] = '\0';
}
}
//find the char which has appeared only once
if (DEBUG){
for (i = 0; c[i] != '\0'; i++){
cout << c[i] << ": " << count[i] << endl;
}
}
only_str = new char[j];
j = 0;
for (i = 0; c[i] != '\0'; i++){
if (count[i] == 1){
only_str[j++] = c[i];
}
}
only_str[j] = '\0';
}
int main(){
char p[100];
cin.getline(p,100);
int len = 0;
char* s = NULL;
findTheOnlyOne(p, s);
cout << s;
return 0;
}