393. UTF-8 Validation

 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 }

 

posted @ 2018-10-29 09:24  jasoncool1  阅读(162)  评论(0编辑  收藏  举报