题解 | #字符串排序#

字符串排序

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

#include <vector>
#include <string>

using namespace std;

string geiwohaozifuchuan(string mystr){
    string tempstr;
    int pt;

    pt = 0;

    for (int i = 0; i < 26; ++i) {
        for (int j = 0; j < mystr.length(); ++j) {
            if (mystr[j] == 'a'+i || mystr[j] == 'A'+i){
                tempstr.push_back(mystr[j]);
            }//是大写或者小写字母
        }
    }
    for (int i = 0; i < mystr.length(); ++i) {
        if ((mystr[i] > 'a'-1 && mystr[i] < 'z'+1)||(mystr[i] > 'A'-1 && mystr[i] < 'Z'+1)){
            mystr[i] = tempstr[pt++];
        }//是大写或者小写字母
    }
    return mystr;
}

int main() {
    string mystr;
    getline(cin,mystr);
    cout << geiwohaozifuchuan(mystr) << endl;
    return 0;
}

  • 1、惯例输入部分
  • 2、对原字符串进行字母提取,由于有排序要求,提取方法特殊化。即从字母a||A开始扫描,直到z||Z。
  • 3、提取后的字符串装到临时string中,只需要对原字符串中的字母按顺序替换就可以(这里用到双指针,因为for遍历原字符容器,其判断到是字母才进行推进,因此创建整型pt当做指针使用。)
全部评论

相关推荐

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