字节笔试题:判断双生词

1.题目描述
在这里插入图片描述
题目:链接

2.解答

#include<iostream>
#include<vector>
using namespace std;
//判断两个字符串为双生词
bool JudgeShuanfsheng(string str1,string str2)
{
    
    
    //cout << "str1:" << str1 << endl;
    //cout << "str2:" << str2 << endl;
    if (str1.size() != str2.size())
        return false;
    //进行顺或逆向比较
    //找到str1中第一个字符在第二个字符串中的位置,可能多个
    vector<int> privotNum;
    for (int i = 0; i < str2.size(); i++)
    {
    
    
        if (str2[i] == str1[0])
        {
    
    
            privotNum.push_back(i);
        }
    }
    //遍历privotNum,使得str2组成顺或逆向字符串,然后与str1比较。只要顺或逆有一项比较“完全一样”,则true,否则false;
    vector<int>::iterator it = privotNum.begin();
    string strNew = "";
    for (it; it != privotNum.end(); it++)
    {
    
    
        //正向拼接
        for (int i = *it; i < str2.size(); i++)
            strNew += str2[i];
        for(int i = 0; i < *it; i++)
            strNew+= str2[i];
        //cout << "1:"<<strNew << endl;
        if (str1 == strNew)
            return true;
        //逆向拼接
        strNew = "";
        for (int i = *it; i >= 0; i--)
            strNew += str2[i];
        for (int i = str2.size()-1; i >*it; i--)
            strNew += str2[i];
        //cout << "2:" << strNew << endl;
        if (str1 == strNew)
            return true;
    }
    return false;
}
int main()
{
    
    
    int group;
    cin >> group;
    int smallGroup;
    while (cin >> smallGroup)
    {
    
    
        if (smallGroup < 2)
            cout << "Sad" << endl;
        string str = "";
        bool mark = false;
        vector<string> strs;
        int count = 0;
        while (cin >> str)
        {
    
    
            strs.push_back(str);
            count++;
            if (count == smallGroup)
                break;
        }
        //把str2取出两个,组合后,调用JudgeShuanfsheng函数
        vector<string>::iterator it = strs.begin();
        for (it++; it != strs.end(); it++)
        {
    
    
            if (JudgeShuanfsheng(strs.at(0), *it) == true)
            {
    
    
                cout << "Yeah" << endl;
                mark = true;
                break;
            }                
        }
        if(!mark)
            cout << "Sad" << endl;
    }
   
}

测试:
在这里插入图片描述

おすすめ

転載: blog.csdn.net/t18438605018/article/details/120240537