程式語言 - LeetCode - C++ - 393. UTF-8 Validation



題目:


解答:

class Solution {
public:
    bool validUtf8(vector<int>& data) {
        int remain = 0;

        for (int n : data) {
            if (remain == 0) {
                if ((n & 0xf8) == 0xf0) {
                    remain = 3;
                }
                else if ((n & 0xf0) == 0xe0) {
                    remain = 2;
                }
                else if ((n & 0xe0) == 0xc0) {
                    remain = 1;
                }
                else if ((n & 0x80) == 0x00) {
                    remain = 0;
                }
                else {
                    return false;
                }
            }
            else {
                if ((n & 0xc0) != 0x80) {
                    return false;
                }
                remain -= 1;
            }
        }

        return remain == 0;
    }
};