1 class Solution {
2 public boolean validUtf8(int[] data) {
3 if(data.length == 0) return false;
4 int start = 0;
5 while(start < data.length){
6 int num = helper(data[start]);
7 if(num == 0){
8 start++;
9 continue;
10 }else if(num == 1){
11 return false;
12 }else if(num == 2){
13 if(start + 1 >= data.length || helper(data[start+1]) != 1){
14 return false;
15 }
16 start = start + 2;
17 }else if(num == 3){
18 if(start + 2 >= data.length || helper(data[start+1]) != 1 || helper(data[start+2]) != 1){
19 return false;
20 }
21 start = start + 3;
22 }else if(num == 4){
23 if(start + 3 >= data.length || helper(data[start+1]) != 1 || helper(data[start+2]) != 1 || helper(data[start+3]) != 1){
24 return false;
25 }
26 start = start + 4;
27 }else{
28 return false;
29 }
30
31 }
32 return true;
33
34 }
35
36 public int helper(int num){
37 int count = 0;
38 for(int i = 7; i >= 0; i--){
39 if(((num >> i) & 1) == 1){
40 count++;
41 }else{
42 break;
43 }
44 }
45 return count;
46 }
47 }