您的位置:首页 > 其它

字符串排序

2015-07-29 14:44 281 查看
描述: 编写一个程序,将输入字符串中的字符按如下规则排序。

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

 
知识点: 字符串,排序 
题目来源: 内部整理 
练习阶段: 中级 
运行时间限制:10Sec
内存限制:128MByte
输入: 

 
输出: 

 
样例输入:
A Famous Saying: Much Ado About Nothing (2012/8).

样例输出:
A aaAAbc dFgghh: iimM nNn oooos Sttuuuy (2012/8).

答案提示:#include <iostream>

#include <string>

using namespace std;

bool Is_Alpha(char a)

{

    if((a>='a' && a<='z') || (a>='A' && a<='Z'))

        return true;

    else

        return false;

}

void sort_string(string a)

{

    size_t i=0;

    size_t j=0;

    size_t k;

    char temp;

    for(i=0; i<a.size(); i++)

    {

        for(j=0; j<a.size()-i-1; j++)

        {

            if(Is_Alpha(a[j])==false)

                continue;
k=j+1;
while((Is_Alpha(a[k])==false) && k<a.size())
{
k++;
}
if(k==a.size())
{
continue;
}
if(tolower(a[k])<tolower(a[j]))
{
temp=a[j];
a[j]=a[k];
a[k]=temp;
}

        }

    }

    cout<<a<<endl;

}

int main()

{

    string str;

    getline(cin,str);

    sort_string(str);

    return 0;

}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: