美文网首页LeetCode
字符串排序,vs2013编译通过,牛客网提交通不过

字符串排序,vs2013编译通过,牛客网提交通不过

作者: dopami | 来源:发表于2019-02-18 17:00 被阅读22次

    编写一个程序,将输入字符串中的字符按如下规则排序。

    规则 1 :英文字母从 A 到 Z 排列,不区分大小写。

           如,输入: Type   输出: epTy

    规则 2 :同一个英文字母的大小写同时存在时,按照输入顺序排列。

         如,输入: BabA   输出: aABb

    规则 3 :非英文字母的其它字符保持原来的位置。

         如,输入: By?e   输出: Be?y

    样例:

        输入:

       A Famous Saying: Much Ado About Nothing(2012/8).

        输出:

       A  aaAAbc   dFgghh :  iimM   nNn   oooos   Sttuuuy  (2012/8).


    代码如下:

    #include<iostream>

    #include<vector>

    #include<string>

    #include<cctype>

    #include<map>

    #include<algorithm>

    using namespace std;

    typedef struct node{

        int s;

        int pos;

    }node;

    int character_check(char c)

    {

        if(isupper(c))

            return c- 'A';

        else if(islower(c))

            return c -'a';

        else

            return -1;

    }

    bool comp(node a, node b)

    {

        if(a.s != b.s)

            return a.s < b.s;

        else

            return a.pos < b.pos;

    }

    int main()

    {

        string str;

        getline(cin,str);

        vector<node> vec;

        for(int i = 0; i<str.size();i++)

        {

            int res = character_check(str[i]);

            if (res<0)

                continue;

            node nd;

            nd.s = res;

            nd.pos = i;

            vec.push_back(nd);

        }

        sort(vec.begin(), vec.end(),comp);

        auto it = vec.begin();

        for(int i = 0; i<str.size();i++)

        {

            int res = character_check(str[i]);

            if (res<0)

            {

                cout<<str[i];

            }

            else

            {

                cout<<str[it->pos];

                if(it != vec.end())

                    it++;

            }

        }

        cout<<endl;

        return 0;

    }


    牛客网上提交结果为:

    您的代码已保存

    答案错误:您提交的程序没有通过所有的测试用例

    case通过率为0.00%

    用例:

    a-&RR@pwojyuD$%&ukmg%NVnS%nh(pF$t!!drI*QdsfHBDYr!rp-$a~%@DxI^k$S-s@GN@uV#D*l$JVLJ&Kw(&Mrv^x%wkZ#(-!ZhMqZ)D%ZhnXA+C&%VoHLSpn!(%O-)$VOI-!)l-H~RFR##+jwo^biOPbB$hh&FG@P@W^*+nKCebJ%PC(Q$pd^%Kp~!J*%&@!ELBYMJjJCDEJw(!!(nG#Py%thZL(szC(*o&xfY&n~-nDRZ^)$!~ZuI*RG%+BMCsaHs)lwgH+i$oByguIv%odmN%pxXJa%OA#%#+(bzEd(Ox^Z#&It

    对应输出应该为:

    a-&aA@aaABbbB$%&bBBB%bCCC%CC(CD$d!!dDD*DDdDDddeE!EE-$F~%@fFF^f$g-G@GG@Gg#g*h$HhhH&Hh(&hhH^H%III#(-!iIiII)j%JJjJJ+J&%jJJJkkK!(%k-)$KKl-!)L-L~lLL##+lmM^MMMmNn$nN&nn@n@n^*+nnNooO%Oo(O$oo^%oO~!O*%&@!ppppPPPppPpQq(!!(QR#Rr%rrrR(RRR(*S&sSs&S~-ssst^)$!~ttu*uu%+uuVVVvV)Vvww+w$wWwwxxX%xxXx%yYYyY%yZ#%#+(ZZZZ(zZ^Z#&zZ

    你的输出为:

    空.请检查一下你的代码,有没有循环输入处理多个case.点击查看如何处理多个case

    相关文章

      网友评论

        本文标题:字符串排序,vs2013编译通过,牛客网提交通不过

        本文链接:https://www.haomeiwen.com/subject/seqzeqtx.html