题解 | #字符串排序#

字符串排序

http://www.nowcoder.com/practice/5190a1db6f4f4ddb92fd9c365c944584

include

include<string.h>

include

using namespace std;

int is_letter(char c)
{
char r;
if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
{
return 1;
}
return 0;
}//判断是否为字母

int main()
{
string tem;
string str = {};
string s;
while(cin>>tem)
{
char c = getchar();
if(c == ' ')
str = str+' '+tem;//遇到空格,字符串拼接
if(c == '\n')
{
str = str+' '+tem;
s = str;//一行字符串存储位置
str.clear();

        s.erase(s.begin());//第一个空格去掉
        vector<int> vec;
        for(int i = 0;i<s.size();i++)
        {
            if(is_letter(s[i]))
            vec.push_back(i);//记下字母的位置
        }

        for(int i = 0;i<vec.size();i++)
        {
           for(int j = 0;j<vec.size()-i-1;j++)
           {
               char t1 = s[vec[j]];
               char t2 = s[vec[j+1]];
               if(t1>='a'&&t1<='z')
                    t1 = t1-32;
               if(t2>='a'&&t2<='z')
                    t2 = t2-32;
               if(t1>t2)
               {
                   char t = s[vec[j]];
                   s[vec[j]] = s[vec[j+1]];
                   s[vec[j+1]] = t;
               }
           }
    }//冒泡排序
    cout<<s<<endl;
    }
}

}

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务