搜索一个前缀然后如果这个前缀在后面出现过就可以删除
如果搜索到没有出现过的前缀则算法停止
前缀可以是一串字符串也可以是 一个字母
所以,我们需要记录每个字母出现的第一个位置,那个位置往后就是答案
因此,从后往前搜索,如果字母没有出现过的,记录位置,即是答案
#include <bits/stdc++.h>
using namespace std;
#define il inline
#define INF 0x3f3f3f3f
#define cl(a, b) memset(a, b, sizeof(a))
typedef long long ll;
typedef unsigned long long ull;
map<char, int> mp;
int ans, t, len;
char s[200200];
int main()
{
scanf("%d", &t);
for (int kkz = 0; kkz < t; kkz++)
{
ans = 0;
scanf("%s", s);
len = strlen(s);
for (int i = len - 1; i >= 0; i--)
{
mp[s[i]]++;
if (mp[s[i]] == 1) ans = i;
}
for (int i = ans; i < len; i++)
{
printf("%c", s[i]);
}
printf("\n");
mp.clear();
}
return 0;
}