| 12345678910111213141516171819202122232425262728 | 
							- func validUtf8(data []int) bool {
 
- 	n, cnt := len(data), 0
 
- 	for i, m := 0, 0; i < n; i++ {
 
- 		if cnt != 0 {
 
- 			if data[i]>>6 != 2 {
 
- 				return false
 
- 			}
 
- 			cnt--
 
- 			continue
 
- 		}
 
- 		// b10000000 = 0x80
 
- 		for m = 0x80; m&data[i] != 0; m >>= 1 {
 
- 		}
 
- 		switch m {
 
- 		case 0x80: // 0xxxxxxx
 
- 		case 0x20: // 110xxxxx
 
- 			cnt = 1
 
- 		case 0x10: // 1110xxxx
 
- 			cnt = 2
 
- 		case 0x08: // 11110xxx
 
- 			cnt = 3
 
- 		default:
 
- 			return false
 
- 		}
 
- 	}
 
- 	return cnt == 0
 
- }
 
 
  |