扑克牌排序,排序规则为:
3,4,5,6,7,8,9,10,J,Q,K,1,2
/*请完成下面这个函数,实现题目要求的功能
当然,你也可以不按照下面这个模板来作答,完全按照自己的想法来 ^-^
******************************开始写代码******************************/
vector < string > pokersort(vector < string > pokers) {
for (int i = 0; i < pokers.size(); i++) {
if (pokers[i] == "10")
pokers[i] = "A";
}
for (int i = 1; i < pokers.size(); i++) {
for (int j = 0; j < pokers.size() - i; j++) {
if (pokers[j] > pokers[j + 1])
swap(pokers[j], pokers[j + 1]);
}
}
int xiabiao; //找到2所在的位置
for (int i = 0; i < pokers.size(); i++) {
if (pokers[i] > "2") {
xiabiao = i - 1;
break;
}
}
vector < string >res; //输出容器
for (int i = xiabiao + 1; i < pokers.size(); i++) {
res.push_back(pokers[i]);
}
for (int i = 0; i < xiabiao + 1; i++) {
res.push_back(pokers[i]);
}
for (int i = 0; i < res.size(); i++) {
if (res[i] == "A") {
res[i] = "10";
continue;
}
if (res[i] == "Q") {
res[i] = "K";
continue;
}
if (res[i] == "K") {
res[i] = "Q";
continue;
}
}
return res;
}
/******************************结束写代码******************************/
这个排序有个坑,本以为是直接比ASCII码就可以了,但必须注意字符串10的大小和字符Q,K的ASCII码。
编译器验证,比大小时候,字符串10的介于1和2之间。