关注
 楼主,基于字典树的第21行会出现越界问题,比如case:  zyyhappy zyy  不同长度的解决方案,用标识isEnd来控制,贴一下我的代码,如果有问题,还望各位指正。 #include <iostream>
#include <list>
#include <vector>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
class Tire
{
public:
    Tire *next[26];
    bool isEnd;
    Tire()
    {
        for(int i = 0 ; i < 26 ;i++)
            next[i] = nullptr;
        isEnd = false;
    }
};
bool findSS(Tire *root, string s)
{
    for(int i=0 ; i < s.size() ;i++)
    {
        int index = s[i] - 'a';
        if(root->next[index] == nullptr)
            return false;
        root = root->next[index];
    }
    return root->isEnd;
}
void addTire(Tire* node, string word)
{
    for(int i = 0 ; i < word.size() ;i++)
    {
        int index = word[i] - 'a';
        if(node->next[index] == nullptr)
            node->next[index] = new Tire();
        node = node->next[index];
    }
    node->isEnd = true;
}
int main()
{
    int t,n;
    string s;
    cin >> t;
    while(t--)
    {
        cin >> n;
        Tire *root = new Tire();
        vector<string> v;
        bool sign = false;
        for(int i = 0 ; i < n ; i++)
        {
            cin >> s;
            string new_s = s+s;
            for(int k = 0 ; k < s.size()+1 ;k++)
            {
                string find_s = new_s.substr(k,s.size());
                if(findSS(root,find_s))
                {
                    sign = true;
                    break;
                }
                reverse(find_***egin(), find_s.end());
                if(findSS(root, find_s))
                {
                    sign = true;
                    break;
                }
            }
            addTire(root, s);
        }
        if(sign) cout << "Yeah" << endl;
        else cout << "Sad" << endl;
    }
}
  查看原帖
  点赞  评论
相关推荐
 点赞 评论 收藏   
分享
 10-05 21:58
  广西职业师范学院 Java   点赞 评论 收藏   
分享
  点赞 评论 收藏   
分享
 牛客热帖
更多 
 正在热议
 更多 
 # 校招生月薪1W算什么水平 #
 27024次浏览 169人参与
# 硬件人的简历怎么写 #
 311556次浏览 3057人参与
# “vivo”个offer #
 36312次浏览 277人参与
# 我是面试官,请用一句话让我破防 #
 22780次浏览 117人参与
# 工作后明白的那些道理 #
 20789次浏览 220人参与
# 如果上班像打游戏,你最想解锁什么技能 #
 6906次浏览 67人参与
# 中美关税战对我们有哪些影响 #
 41209次浏览 350人参与
# 中美关系回暖,你会选择出海吗? #
 4664次浏览 94人参与
# AI时代,哪些岗位最容易被淘汰 #
 2511次浏览 27人参与
# 华为保温 #
 105910次浏览 403人参与
# 机械人,签完三方你在忙什么? #
 65486次浏览 244人参与
# 第一份工作应该只看薪资吗 #
 192035次浏览 1687人参与
# 牛友们,签完三方你在忙什么? #
 119696次浏览 958人参与
# 哪些行业值得去? #
 4364次浏览 46人参与
# 金融财经春招备战日记 #
 38520次浏览 210人参与
# i人适合做什么工作 #
 9806次浏览 88人参与
# 如果秋招能重来,我会____ #
 34111次浏览 283人参与
# 美团开奖 #
 208397次浏览 1100人参与
# 国央企笔面经互助 #
 160926次浏览 1182人参与
# 读研or工作,哪个性价比更高? #
 76901次浏览 767人参与
# 华为池子有多大 #
 109395次浏览 750人参与

