题解 | 打牌

打牌

https://www.nowcoder.com/practice/82442ee76977479e8ab4b88dfadfca9f

#include <iostream>
using namespace std;
#include <bits/stdc++.h>
bool isSame(string s) {   //判断对子
    for (int i = 0; i < s.size(); i++) {
        if (s[i] != s[0]) {
            return false;
        }

    }
    return true;

}

bool isSeq(string s) {    //判断是不是顺子
    for (int i = 1; i < s.size(); i++) {
        if (s[i] != s[i - 1] + 1) {     
            return false;
        }
    }

    return true;
}

int main() {
    string a, b;
    while (cin >> a >> b) {
        int n = b.size();
        int num1 = stoi(b);
        bool isOk = false;
        if (n <= 4) {
            for (int i = 0; i < a.size(); i++) {
                string p = a.substr(i, n);
                if (!isSame(p)) {
                    continue;
                }
                int num2 = stoi(p);
                if (num2 > num1) {
                    isOk = true;
                    break;
                }

            }
        } else {
            set<char> myset;
            for (int i = 0; i < a.size(); i++) {
                myset.insert(a[i]);
            }
            string ss = "";
            for (auto it : myset) {
                ss += it;   //对输入的字符串进行去重
            }
            for (int i = 0; i < ss.size(); i++) {
                string p = ss.substr(i, n);
                if(!isSeq(p)){
                    continue;   //如果截取的子串不是顺子,则下一个
                }

                int num2 = stoi(p);
                if (num2 > num1) {
                    isOk = true;
                    break;
                }
            }
        }
            if (isOk) {
                printf("YES\n");
            } else {
                printf("NO\n");
            }
        return 0;
    }

}

全部评论

相关推荐

点赞 评论 收藏
分享
02-28 13:25
已编辑
门头沟学院 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务