• 393. UTF-8 Validation


    393. UTF-8 Validation
    这个题很明确,刚开始我以为只能是一个utf,长度大于5的都判断为false,后来才明白题意。

    有个小trick,就是长度大于1的时候,判断第一个数字开始1的个数,至少要大于1才行,这个算是考虑不全。

    class Solution {
    public:
       bool work(vector<int> &data, int x, int y) {
    
            if(x > y) return 1;
            int cur = data[x];
            if(!(cur & (1 << 7))) {
                return work(data, x + 1, y);
            } else {
                int cnt = 0;
                for (int i = 7; i >= 0; i--) {
                    if(cur & (1 << i)) cnt++;
                    else break;
                }
                //cout << cnt << endl;
                if(cnt > 4 || cnt < 2) return 0;
                if(y - x + 1 < cnt) return 0;
                for (int i = 1; i < cnt; i++) {
                    cur = data[x + i];
                    if((cur >> 6) != 2) return 0;
                }
                return work(data, x + cnt, y);
            }
        }
        bool validUtf8(vector<int>& data) {
            return work(data, 0, data.size() - 1);
        }
    };
    
  • 相关阅读:
    1010考试T1
    P5631 最小mex生成树 分治 并查集
    P4366 [Code+#4]最短路 建图 最短路
    P1654 OSU! 期望概率DP
    7.26集训
    7.25集训
    7.23集训
    7.22集训
    7.21test
    7.12test
  • 原文地址:https://www.cnblogs.com/y119777/p/5840550.html
Copyright © 2020-2023  润新知