题解 AT4233 【[ABC110C] String Transformation】

Zirnc

2020-02-19 19:26:52

Solution

[ChungZH's blog](https://chungzh.cn) · [ChungZH's portfolio](https://chungzh.cc) > 您会得到由小写英文字母组成的字符串 $S$ 和 $T$。 > > 您可以在 $S$ 上多次执行以下操作: > > 操作:选择两个不同的小写英文字母 $c_1$ 和 $c_2$,然后将每次出现的 $c_1$ 替换为 $c_2$,并将每次出现的 $c_2$ 替换为 $c_1$。 > > 通过执行零次或更多次操作,确定 $S$ 和 $T$ 是否可以相等。 用数组 $a$ 记录 $S$ 中每个字符出现的次数,数组 $b$ 记录 $T$ 中每个字符出现的次数。排序一下,判断 $a_i$ 和 $b_i$ 是否相等。不相等证明无法替换,输出 `No`。否则输出 `Yes`。 ```cpp long long a[30], b[30]; int main() { string s, t; cin >> s >> t; for (int i = 0; i < s.length(); i++) { a[s[i]-'a']++; b[t[i]-'a']++; } sort(a, a+26); sort(b, b+26); for (int i = 0; i < 26; i++) { if (a[i] != b[i]) { cout << "No\n"; return 0; } } cout << "Yes\n"; return 0; } ```