1 solutions

  • 1
    @ 2024-4-15 13:53:45

    题意

    输入一个字符串。再输入 CiC_iDiD_i,让字符串里的 CiC_i 换成 DiD_i

    思路

    一开始想的是用 find,但还是 TLE

    但是样例 3 表现出来,有的字母是换成一个后再换成另一个(比如a→c→s),所以可以直接将让这个字母换成最后要换成的字母(a→s

    代码

    #include <bits/stdc++.h>
    using namespace std;
    int a[26] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25};	// 初始化,一开始大家都是变成自己
    int main(int argc, char **argv){
    	int n,q;string s;
    	cin >> n >> s >> q;
    	for (int i = 0;i < q;i++){
    		char c,d;
    		cin >> c >> d;
    		for (int i = 0;i < 26;i++){	// 将指向 c 的直接指向 d
    			if (a[i] == c - 'a')	a[i] = d - 'a';
    		}
    	}
    	for (int i = 0;i < s.size();i++){	// 换字母
    		s[i] = (char)a[s[i] - 'a'] + 'a';
    	}
    	cout << s;
    	return 0;
    }
    
    • @ 2024-4-16 13:24:05

      👍

      不错,记得初始化

    • @ 2024-4-17 16:27:18

      !!!注意:

      千万不要用map存,会TLE!!!

  • 1

Information

ID
1059
Time
1000ms
Memory
512MiB
Difficulty
8
Tags
(None)
# Submissions
125
Accepted
17
Uploaded By