题解 | #对称之美#
对称之美
https://ac.nowcoder.com/acm/problem/214850
双指针+哈希模拟
#include <bits/stdc++.h>
using namespace std;
int T;
vector<string> words;
bool check()
{
bool flag=false;
int left=0, right=words.size()-1;
while(left<=right)
{
// left中各个字母是否出现和right中各个字母是否出现
bool hash1[30]={false}, hash2[30]={false};
for(int i=0;i<words[left].size();++i)
hash1[words[left][i]-'a']=true;
for(int i=0;i<words[right].size();++i)
hash2[words[right][i]-'a']=true;
// 找是否有相同的字母
for(int i=0;i<26;++i)
{
if(hash1[i]==true&&hash2[i]==true)
{
flag=true;
break;
}
}
if(!flag)
return false;
flag = false;
left++;
right--;
}
return true;
}
void solve()
{
if(check())
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
int main()
{
cin>>T;
while(T--)
{
words.clear();
int n; cin >> n;
for(int i=1;i<=n;++i)
{
string tmp; cin >>tmp;
words.push_back(tmp);
}
solve();
}
return 0;
}