题解 | #查找兄弟单词#

查找兄弟单词

http://www.nowcoder.com/practice/03ba8aeeef73400ca7a37a5f3370fe68

c++ dfs+set

算法思路

采用dfs对输入待查字符串中的字符进行排序,返回的所有字符串结果去掉与其相同的就是所有的兄弟单词,但是由于字符串中存在重复元素,所以需要用set集合去重

具体代码实现

using namespace std;
char c[11];
bool st[12];
set<string>v;
void dfs(int u,int a,string s){
    if(u==a){
        string ss=c;
        if(strcmp(ss.c_str(),s.c_str())!=0){
          v.insert(ss);
        }
        return ;
    }
    for(int i=0;i<s.size();i++){
        if(!st[i]){
            c[u]=s[i];
            st[i]=true;
            dfs(u+1,a,s);
            st[i]=false;
        }
    }
}
int main(){
    int n,k;
    cin>>n;
    vector<string >vs,vs1;
    for(int i=0;i<n;i++){
        string s;
        cin>>s;
        vs.push_back(s);
    }
    string s1;
    cin>>s1>>k;
    dfs(0,s1.size(),s1);
    for(int i=0;i<vs.size();i++){
        if(v.find(vs[i])!=v.end()){
            vs1.push_back(vs[i]);
        }
    }
    cout<<vs1.size()<<endl;
    if(k<vs1.size()){
        sort(vs1.begin(),vs1.end());
        cout<<vs1[k-1]<<endl;
    }
    return 0;
}
全部评论

相关推荐

希望各位大哥分享一下自己的看法,对于机器人行业确实不太了解
绝顶但不聪明:如果是机器人相关岗位,优先优必选(专门***器人的),其他岗位选小米
投递小米集团等公司10个岗位 > 牛客解忧铺 牛客在线求职答疑中心
点赞 评论 收藏
分享
头像
10-09 19:35
门头沟学院 Java
洛必不可达:java的竞争激烈程度是其他任何岗位的10到20倍
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务