题解 | #对称之美#

对称之美

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;
}
全部评论

相关推荐

点赞 评论 收藏
分享
Java抽象带篮子:难蚌,点进图片上面就是我的大头😆
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务