【字符串处理】UVALive

来源:互联网 发布:中航期货软件 编辑:程序博客网 时间:2024/05/22 03:39

Problem Description

给你T组数据,每组数据先给你一个串,只包含大写字母或者下划线。给你m组操作,每组操作有u, v两个大写字母,就是将串里面的所有字母v变成字母u

思路:把B变成A, 把A变成C,就相当于把 B变成C。那一个数组来存最后该字母变成那个字母

#include<bits/stdc++.h>using namespace std;char s[1000055];int main(){    int T, m;    char c1[2], c2[2];    int flag[30];//用来存,最后该字母变成那个字母    scanf("%d", &T);    while(T--)    {        scanf("%s", s);        for(int i = 0; i <= 26; i++)//初始化            flag[i] = i;        scanf("%d", &m);        while(m--)        {            scanf("%s %s", c1, c2);            int u = c1[0] - 'A';//转换成整数            int v = c2[0] - 'A';            for(int i = 0; i <= 25; i++)//核心            {                if(flag[i] == v)//原本flag[i]是字母v,现在让他变成字母u                {                    flag[i] = u;                }            }        }        int len = strlen(s);        for(int i = 0; i < len; i++)        {            if(s[i] >= 'A' && s[i] <= 'Z')//如果是大写字母            {                int t = s[i] - 'A';                printf("%c", flag[t] + 'A');//输出变后结果            }            else printf("%c", s[i]);        }        printf("\n");    }    return 0;}
原创粉丝点击