字符串经典题之扑克牌的大小
生活随笔
收集整理的這篇文章主要介紹了
字符串经典题之扑克牌的大小
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目
這種類型的題目不涉及算法,和我們日常的業務邏輯十分相似。最關鍵的一點就是思維清晰,逐步細化。
比較的時候首先比較類型,如果兩副牌的數目相同,那么肯定是相同類型的,在這種情況下再去比較點數,而比較點數的時候大小完全是依靠第一張牌的點數大小決定的;一旦兩幅排數目不相同,表示類型出現了差異,這種情況下必須有一方是炸彈,不然就不滿足題意的輸入了
#include <iostream> #include <string> #include <algorithm> using namespace std;string find_max(const string& input) {//首先上來看一下有沒有王炸if(input.find("joker JOKER")!=string::npos){return "joker JOKER";}//分開兩幅牌string left=input.substr(0,input.find('-'));string right=input.substr(input.find('-')+1);//注意+1,不要把“-”放進第二張牌了//左牌和右牌的數目=空格數+1;利用算法中的count統計size_t left_num=count(left.begin(),left.end(),' ')+1;size_t right_num=count(right.begin(),right.end(),' ')+1;//如果左面和右面的數量相等,那就說明類型相同if(left_num==right_num){//首先拿出左面和右面的第一章牌string left_first=left.substr(0,left.find(' '));string right_first=right.substr(0,right.find(' '));//類型相同就比較點數string compare("345678910JQKA2jokerJOKER");if(compare.find(left_first) > compare.find(right_first)){//如果左大于有return left;}else{return right;}}//如果數量不相等,那么有可能是炸彈導致的if(left_num==4){return left;}else if(right_num==4){return right;}else//數量不相等,無法比較{return "ERROR";}}int main() {string input;//接受輸入string ret;//返回情況while(getline(cin,input)){ret=find_max(input);cout<<ret<<endl;}return 0;}總結
以上是生活随笔為你收集整理的字符串经典题之扑克牌的大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网上图书商城项目学习笔记-035工具类之
- 下一篇: 分治算法练习(一)