LeetCode

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

2019-02-18  本文已影响22人  dopami

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

规则 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

上一篇下一篇

猜你喜欢

热点阅读