blob: 0cb96d74c391843c5355336da83137669746ce73 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
#include "leetcode.h"
class Solution {
public:
bool validUtf8(vector<int> &data) {
int m1 = 0x80, m2 = 0x20, m3 = 0x10, m4 = 0x08, m5 = 0xC0;
for (int i = 0; i < data.size(); i++) {
if ((m5 & data[i]) == m1)
return false;
int bytes{0};
if ((m1 & data[i]) == 0)
continue;
else if ((m2 & data[i]) == 0)
bytes = 1;
else if ((m3 & data[i]) == 0)
bytes = 2;
else if ((m4 & data[i]) == 0)
bytes = 3;
else
return false;
while (bytes--) {
i++;
if (i >= data.size() || ((m5 & data[i]) != m1))
return false;
}
}
return true;
}
};
int main() {
Solution obj;
vector<int> data = {197, 130, 1};
if (obj.validUtf8(data))
cout << "true";
else
cout << "false";
}
|