题解 | #查找兄弟单词# 新手纯基础操作解题

查找兄弟单词

https://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68?tpId=37&tqId=21250&rp=1&ru=/exam/oj/ta&qru=/exam/oj/ta&sourceUrl=%2Fexam%2Foj%2Fta%3Fdifficulty%3D3%26judgeStatus%3D3%26page%3D1%26pageSize%3D50%26search%3D%26tpId%3D37%26type%3D37&difficulty=3&judgeStatus=3&tags=&title=

#include <bits/stdc++.h>
#include <sstream>
using namespace std;

bool borther(string s1,string s2){
    vector<char>v1;
    vector<char>v2;
    if(s1 == s2){
        return false; //两个字符串如果直接相等,就不是兄弟单词
    }
    else if(s1.size()!=s2.size()){
        return false;        //两个字符串长度不同也不是兄弟单词
    }
    else{          // 当两个字符串有相同的长度且不相同时,进入判断
        for(char c1 : s1){
        v1.push_back(c1);       //先把s1中的每个字符输入进v1中
        }
        sort(v1.begin(),v1.end());  // 把v1中的字符元素排序

        for(char c2 : s2){
        v2.push_back(c2);       //先把s2中的每个字符输入进v2中
        }
        sort(v2.begin(),v2.end());  // 把v2中的字符元素排序

        string s3="";
        for(char c3 : v1){      //把v1中排好序的字符元素按顺序输出到字符串s3中
            s3 = s3 + c3;
        }

        string s4="";
        for(char c4 : v2){
            s4 = s4 + c4;    //把v2中排好序的字符元素按顺序输出到字符串s4中      
        }

        if(s3 == s4){
        return true;    //如果两个字符串相同,说明这两个字符串拥有的字母相同,长度也相同,且不直接相同,是兄弟单词
        }
        else{
        return false;
        }
    }
}
int main() {
    string str;
    getline(cin,str);

    pair<int,int>p;
    vector<string>vec;
    string s1;

    string str1;
    stringstream ss(str);
    while (getline(ss,str1,' ')) {
        vec.push_back(str1);
        //cout<<str1<<';';
    }

    int vend = vec.size();
    //cout<<vend<<endl;

    int p1 = stoi(vec[0]);
    int p2 = stoi(vec[vend-1]);

    p.first = p1;
    p.second = p2;

    //cout<<p.first<<';'<<p.second<<endl;

    vector<string>v1;
    for(int i = 1 ; i<vend-2;i++){
        v1.push_back(vec[i]);
        //cout<<vec[i]<<";";
    }

    s1 = vec[vend-2];
    //cout<<s1<<endl;

    int cont=0;
    vector<string>v0;

    for(string s0 : v1){
        if(borther(s0, s1)){
            cont++;
            v0.push_back(s0);
            //cout<<s0<<';';
        }
    }
    cout<<cont<<endl;

    sort(v0.begin(), v0.end());

    for(int j =0 ; j < v0.size() ;j++){
        if(j == p.second-1){
            cout<<v0[j];
        }
    }

    return 0;


}
// 64 位输出请用 printf("%lld")

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务