//Answer on Question#44994 - Progamming - C#include <stdio.h>#include <string.h>int main() { int T; char S[70]; int len; int i, j; int curr; int start, finish; int pos['z' - 'a' + 1]; scanf("%d", &T); while (T-- > 0) { scanf("%s", S); len = strlen(S); start = 0; finish = 0; curr = 0; memset(pos, -1, sizeof(pos)); for (i = 0; i < len; ++i) { if (pos[S[i] - 'a'] != -1) { if (i - curr > finish - start + 1) { start = curr; finish = i - 1; } for (j = curr; j < pos[S[i] - 'a']; ++j) { pos[S[j] - 'a'] = -1; } curr = pos[S[i] - 'a'] + 1; } else { pos[S[i] - 'a'] = i; } } if (len - curr > finish - start + 1) { start = curr; finish = len - 1; } for (i = start; i <= finish; ++i) { printf("%c", S[i]); } printf("\n"); }}
Comments