Skip to content

Commit cfcc03e

Browse files
author
kwu130
committed
feat(src): add 393-validUtf8
1 parent 8eb1baa commit cfcc03e

1 file changed

Lines changed: 54 additions & 0 deletions

File tree

‎src/393-validUtf8.cpp‎

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
//
2+
// Created by 1412 on 2026/4/13.
3+
//
4+
5+
#include <bits/stdc++.h>
6+
7+
using namespace std;
8+
9+
class Solution {
10+
public:
11+
bool validUtf8(vector<int>& data) {
12+
for (size_t i = 0; i < data.size(); ++i) {
13+
if (data[i] >> 7 == 0b0) {
14+
continue;
15+
}
16+
if (data[i] >> 5 == 0b110) {
17+
if (i + 1 < data.size() && data[i + 1] >> 6 == 0b10) {
18+
i++;
19+
continue;
20+
}
21+
}
22+
if (data[i] >> 4 == 0b1110) {
23+
if (i + 2 < data.size() && data[i + 1] >> 6 == 0b10 && data[i + 2] >> 6 == 0b10) {
24+
i += 2;
25+
continue;
26+
}
27+
}
28+
if (data[i] >> 3 == 0b11110) {
29+
if (i + 3 < data.size() && data[i + 1] >> 6 == 0b10 && data[i + 2] >> 6 == 0b10 &&
30+
data[i + 3] >> 6 == 0b10) {
31+
i += 3;
32+
continue;
33+
}
34+
}
35+
return false;
36+
}
37+
return true;
38+
}
39+
};
40+
41+
void test() {
42+
Solution s;
43+
vector<int> data = {197, 130, 1};
44+
assert(s.validUtf8(data) == true);
45+
data = {235, 140, 4};
46+
assert(s.validUtf8(data) == false);
47+
data = {237};
48+
assert(s.validUtf8(data) == false);
49+
}
50+
51+
int main() {
52+
test();
53+
return 0;
54+
}

0 commit comments

Comments
 (0)