1
class Solution {
2
public boolean validUtf8(int[] data) {
3
return help(data, 0);
4
}
5

6
public boolean help(int[] data, int index) {
7
int n = data.length - index;
8
if (n == 0) {
9
return true;
10
}
11
int c0 = count(data[index]);
12
if (c0 < 0 || c0 > n) {
13
return false;
14
}
15
for (int i = index + 1; i < index + c0; i++) {
16
if ((data[i] & 0b10000000) != 0b10000000) {
17
return false;
18
}
19
}
20
return help(data, index + c0);
21
}
22

23
private int count(int a) {
24
if ((a >> 3) == 0b11110) {
25
return 4;
26
} else if ((a >> 4) == 0b1110) {
27
return 3;
28
} else if ((a >> 5) == 0b110) {
29
return 2;
30
} else if ((a >> 7) == 0) {
31
return 1;
32
}
33
return -1;
34
}
35
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0