我是靠谱客的博主 标致小蚂蚁,最近开发中收集的这篇文章主要介绍【华为机试】字符串排序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

题目描述

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

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

       如,输入: Type   输出:epTy

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

     如,输入: BabA   输出: aABb

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

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

示例1

输入

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

输出

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

分析:很巧妙的方法,按顺序依次在字符串中查找所有的aAbB·····,在加入到输出字符串之前判断原字符串对应的位置是否是非英文字符,是则先加入非英文字符,在加入英文字符,不是则直接加入英文字符。

程序:

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int main(){
string s;
while (getline(cin, s)){
string temp = s,res;
for (int i = 0; i < 26; ++i){
int j = 0;
while(j < temp.size()){
if (temp[j] == i + 'a' || temp[j] == i + 'A'){
while (!isalpha(s[res.size()]))
//isalpha(char)判断是否为英文字符;
res+=s[res.size()];
res += temp[j];
//加入之前判断原字符串此位置是否是非英文字符;
temp.erase(temp.begin() + j);
//删掉查找过的英文字符;
}
else ++j;
}
}
for (int i = res.size(); i < s.size(); ++i) res += s[i];
cout << res << endl;
}
return 0;
}

最后

以上就是标致小蚂蚁为你收集整理的【华为机试】字符串排序的全部内容,希望文章能够帮你解决【华为机试】字符串排序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部