HJ14 字符串排序

2022-07-14  本文已影响0人  help_youself

 重载less比较符号。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//1 a<b
static inline int compareAlpha(const char &a,const char &b){
  if(b-a>0){
      return 1;
  }else if(b-a<0){
      return -1;
  }else{
      return 0;
  }
}
//stra<strb
bool strComp(const std::string &stra,const std::string &strb){
    int m=stra.size(),n=strb.size();
    int i=0;
    int min=m>n?n:m;
    while(i<min){
        if(1==compareAlpha(stra.at(i),strb.at(i))){
            return true;
        }else if(-1==compareAlpha(stra.at(i),strb.at(i))){
            return false;
        }
        i++;
    }
    if(n>m){
        return true;
    }
    return false;
}
int main(){
    std::vector<std::string> vec;
    int n=0;
    {
        std::string line;
        getline(std::cin,line);
        n=std::stoi(line);
    }
    for(int i=0;i<n;i++){
        std::string line;
        getline(std::cin,line);
        vec.push_back(line);
    }
    std::sort(vec.begin(),vec.end(),strComp);
    for(int i=0;i<n;i++){
        std::cout<<vec.at(i)<<std::endl;
    }
    return 0;
}

 c++的字符串可以直接比较。可以直接调用,最终结果就是按照升序排列。

 std::sort(vec.begin(),vec.end());
上一篇 下一篇

猜你喜欢

热点阅读