Untitled
unknown
plain_text
2 years ago
1.5 kB
6
Indexable
#include <stdio.h> #include <string.h> char str[1000005], alp[30], a1, a2; int q, op[100005][3], tmp, ok[1000005]; int main(){ scanf("%s %d", str, &q); for(int i = 0; i < 26; i++) alp[i] = 'a' + i; for(int i= 0; i < q; i++){ scanf("%d", &op[i][0]); if(op[i][0] == 1){ scanf(" %c %c", &a1, &a2); op[i][1] = a1, op[i][2] = a2; } else if(op[i][0] == 2){ scanf("%d %c", &op[i][1], &a1); op[i][2] = a1; }else if(op[i][0] == 3) scanf("%d %d", &op[i][1], &op[i][2]); } for(int i = q - 1; i >= 0; i--){ if(op[i][0] == 1) alp[op[i][1] - 'a'] = alp[op[i][2] - 'a']; else if(op[i][0] == 2) op[i][2] = alp[op[i][2] - 'a']; else continue; } for(int i = 0; i < 26; i++) alp[i] = 'a' + i; for(int i = 0; i < q; i++){ if(op[i][0] == 1) alp[op[i][1] - 'a'] = op[i][2]; else if(op[i][0] == 2) str[op[i][1]] = op[i][2], ok[op[i][1]] = 1; else if(op[i][0] == 3){ tmp = str[op[i][1]], str[op[i][1]] = str[op[i][2]], str[op[i][2]] = tmp; tmp = ok[op[i][1]], ok[op[i][1]] = ok[op[i][2]], ok[op[i][2]] = tmp; } } for(int i = 0; str[i] != '\0'; i++){ if(ok[i] == 0){ for(int j = 0; j < 26; j++){ if(str[i] == 'a' + j) str[i] = alp[str[i] - 'a']; } } } printf("%s\n", str); }
Editor is loading...