题解 | #扑克牌大小#
扑克牌大小
http://www.nowcoder.com/practice/d290db02bacc4c40965ac31d16b1c3eb
#include <iostream>
#include <string>
#include <vector>
std::vector<std::string> split(std::string str, char c) {
int pos;
std::string s(str);
std::vector<std::string> tmp;
while (!s.empty()) {
if ((pos = s.find(c)) != s.npos) {
tmp.push_back(s.substr(0, pos));
s = s.substr(pos + 1);
} else {
tmp.push_back(s);
break;
}
}
return tmp;
}
int judge(std::vector<std::string> vec) {
int size = vec.size();
if (size == 2) {
if (vec[0] == vec[1]) {
return 2;
} else if ((vec[0] == "joker" && vec[1] == "JOKER")
|| (vec[1] == "joker" && vec[2] == "JOKER")) {
return 6;
}
} else {
return size;
}
}
void print(std::vector<std::string> vec) {
for (auto it = vec.begin(); it < vec.end(); it++) {
std::cout << *it << " ";
}
std::cout << std::endl;
}
int main() {
std::string str;
std::string poker = "345678910JQKA2";
while (getline(std::cin, str)) {
std::vector<std::string> vec0(split(str, '-'));
std::vector<std::string> vec1(split(vec0[0], ' '));
std::vector<std::string> vec2(split(vec0[1], ' '));
if (judge(vec1) == 6) {
print(vec1);
continue;
}
if (judge(vec2) == 6) {
print(vec2);
continue;
}
if (judge(vec1) == 4) {
if (judge(vec2) == 4 && (poker.find(vec2[0]) > poker.find(vec2[0]))) {
print(vec2);
} else {
print(vec1);
}
continue;
}
if (judge(vec2) == 4) {
print(vec2);
continue;
}
if (judge(vec1) != judge(vec2)) {
std::cout << "ERROR" << std::endl;
continue;
}
if (poker.find(vec1[0]) > poker.find(vec2[0])) {
print(vec1);
} else {
print(vec2);
}
}
}
查看28道真题和解析