Skip to content

Commit d746434

Browse files
refactor 393
1 parent ff8e4ce commit d746434

File tree

1 file changed

+3
-37
lines changed
  • src/main/java/com/fishercoder/solutions

1 file changed

+3
-37
lines changed

src/main/java/com/fishercoder/solutions/_393.java

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,11 @@
11
package com.fishercoder.solutions;
22

3-
/**
4-
* 393. UTF-8 Validation
5-
*
6-
* A character in UTF8 can be from 1 to 4 bytes long, subjected to the following rules:
7-
8-
For 1-byte character, the first bit is a 0, followed by its unicode code.
9-
For n-bytes character, the first n-bits are all one's, the n+1 bit is 0, followed by n-1 bytes with most significant 2 bits being 10.
10-
This is how the UTF-8 encoding would work:
11-
12-
Char. number range | UTF-8 octet sequence
13-
(hexadecimal) | (binary)
14-
--------------------+---------------------------------------------
15-
0000 0000-0000 007F | 0xxxxxxx
16-
0000 0080-0000 07FF | 110xxxxx 10xxxxxx
17-
0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
18-
0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
19-
Given an array of integers representing the data, return whether it is a valid utf-8 encoding.
20-
21-
Note:
22-
The input is an array of integers. Only the least significant 8 bits of each integer is used to store the data. This means each integer represents only 1 byte of data.
23-
24-
Example 1:
25-
data = [197, 130, 1], which represents the octet sequence: 11000101 10000010 00000001.
26-
Return true.
27-
28-
It is a valid utf-8 encoding for a 2-bytes character followed by a 1-byte character.
29-
30-
31-
Example 2:
32-
data = [235, 140, 4], which represented the octet sequence: 11101011 10001100 00000100.
33-
Return false.
34-
35-
The first 3 bits are all one's and the 4th bit is 0 means it is a 3-bytes character.
36-
The next byte is a continuation byte which starts with 10 and that's correct.
37-
But the second continuation byte does not start with 10, so it is invalid.
38-
*/
393
public class _393 {
404

415
public static class Solution1 {
42-
/** credit: https://discuss.leetcode.com/topic/58338/bit-manipulation-java-6ms/4 */
6+
/**
7+
* credit: https://discuss.leetcode.com/topic/58338/bit-manipulation-java-6ms/4
8+
*/
439
public boolean validUtf8(int[] data) {
4410
int count = 0;
4511
for (int d : data) {

0 commit comments

Comments
 (0)