C题:Reversible
标签:
S
T
L
STL
STL、
m
a
p
map
map
题意:给定
n
n
n个字符串,每个字符串可以翻转,如果两个字符串中其中一个翻转之后和另一个相同,认为这两个字符串也相同(比如
a
b
c
abc
abc和
c
b
a
cba
cba),题目求不同的字符串个数。
题解:用
m
a
p
map
map去标记下每个字符串的原串和翻转串,先检测一下,如果没有在
m
a
p
map
map中出现过,那就是新串,计数加一。
代码:
#include <bits/stdc++.h>
using namespace std;
map<string, int> m;
int main() {
int n, ans = 0;
string s;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> s;
if (!m[s]) ans++;
m[s]++;
reverse(s.begin(), s.end());
m[s]++;
}
cout << ans << endl;
return 0;
}