题解 | #查找兄弟单词#

查找兄弟单词

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

#include <iostream>
using namespace std;

int FindNum(string str, char a, int length)
{
    int result = 0;
    for(int i=0; i<length; i++)
    {
        if(str[i] == a)
        {
            result++;
        }
    }
    return result;
}
int main()
{
    int num;
    while(cin>>num)
    {
        //输入num个单词
        string input[num];
        for(int i=0; i<num; i++)
        {
            cin>>input[i];
        }
        //输入str he k
        string str;
        cin>>str;
        int z;
        cin>>z;

        int length=str.size();
        //查找兄弟单词
        int iresult = num;
        for(int i=0; i<num; i++)
        {
            //如果长短不一样就不是兄弟
            if(input[i].length() != length)
            {
                input[i]="";
                iresult--;
                continue;
            }


            //如果两个完全一样就不是兄弟
            else if(input[i] == str)
            {
                input[i]="";
                iresult--;
                continue;
            }
            //如果每个字母的个数不一样就不是兄弟
            for(int j=0; j<length; j++)
            {
                if(FindNum(input[i], str[j], length) != FindNum(str, str[j], length))
                {
                    input[i]="";
                    iresult--;
                    break;
                }
            }

        }
        cout<<iresult<<endl; 
        string result[iresult];
        int index = 0 ;
        for(int i=0; i<num; i++)
        {
            if(input[i]=="")
            {
                continue;
            }
            result[index] = input[i];
            index ++;
        }
        //兄弟单词字典排序(maopao)
        for(int i=0; i<iresult; i++)
        {
            for(int j=0; j<iresult-i-1;j++)
            {
                for(int m=0; m<length; m++)
                {
                    if(result[j][m]<result[j+1][m])
                    {
                        break;
                    }
                    else if(result[j][m]>result[j+1][m])
                    {
                        swap(result[j], result[j+1]);
                        break;
                    }
                }
            }
        }
        if(z<iresult)
        {
            cout<<result[z-1]<<endl;
        }
    }


    return 0;
}
全部评论

相关推荐

看网上风评也太差了
投递万得信息等公司10个岗位 >
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务