最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java?LeetCode普通字符串模擬題解示例

 更新時間:2023年02月03日 10:42:34   作者:宮水三葉的刷題日記  
這篇文章主要為大家介紹了java?LeetCode普通字符串模擬題解示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

題目描述

這是 LeetCode 上的 393. UTF-8 編碼驗證 ,難度為 中等。

Tag : 「模擬」

給定一個表示數(shù)據(jù)的整數(shù)數(shù)組 data ,返回它是否為有效的 UTF−8 編碼。

UTF-8 中的一個字符可能的長度為 1 到 4 字節(jié),遵循以下的規(guī)則:

  • 對于 1字節(jié) 的字符,字節(jié)的第一位設(shè)為 0,后面 7 位為這個符號的 unicode 碼。
  • 對于 n 字節(jié) 的字符 (n>1),第一個字節(jié)的前 n 位都設(shè)為 1,第 n+1 位設(shè)為 0 ,后面字節(jié)的前兩位一律設(shè)為 10。剩下的沒有提及的二進(jìn)制位,全部為這個符號的 unicode 碼。

這是 UTF-8 編碼的工作方式:

   Char. number range  |        UTF-8 octet sequence
      (hexadecimal)    |              (binary)
   --------------------+---------------------------------------------
   0000 0000-0000 007F | 0xxxxxxx
   0000 0080-0000 07FF | 110xxxxx 10xxxxxx
   0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
   0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

注意:輸入是整數(shù)數(shù)組。只有每個整數(shù)的 最低 8 個有效位 用來存儲數(shù)據(jù)。這意味著每個整數(shù)只表示 1 字節(jié)的數(shù)據(jù)。

示例 1:

輸入:data = [197,130,1]
輸出:true
解釋:數(shù)據(jù)表示字節(jié)序列:11000101 10000010 00000001。
這是有效的 utf-8 編碼,為一個 2 字節(jié)字符,跟著一個 1 字節(jié)字符。

示例 2:

輸入:data = [235,140,4]
輸出:false
解釋:數(shù)據(jù)表示 8 位的序列: 11101011 10001100 00000100.
前 3 位都是 1 ,第 4 位為 0 表示它是一個 3 字節(jié)字符。
下一個字節(jié)是開頭為 10 的延續(xù)字節(jié),這是正確的。
但第二個延續(xù)字節(jié)不以 10 開頭,所以是不符合規(guī)則的。

提示:

模擬

根據(jù)題意進(jìn)行模擬即可。

如果上述過程滿足要求,跳到下一個檢查點進(jìn)行檢查,整個 data 都沒有沖突則返回 True。

代碼:

class Solution {
    public boolean validUtf8(int[] data) {
        int n = data.length;
        for (int i = 0; i < n; ) {
            int t = data[i], j = 7;
            while (j >= 0 && (((t >> j) & 1) == 1)) j--;
            int cnt = 7 - j;
            if (cnt == 1 || cnt > 4) return false;
            if (i + cnt - 1 >= n) return false;
            for (int k = i + 1; k < i + cnt; k++) {
                if ((((data[k] >> 7) & 1) == 1) && (((data[k] >> 6) & 1) == 0)) continue;
                return false;
            }
            i += cnt == 0 ? 1 : cnt;
        }
        return true;
    }
}
  • 時間復(fù)雜度:O(n)
  • 空間復(fù)雜度:O(1)

最后

這是我們「刷穿 LeetCode」系列文章的第 No.393 篇,系列開始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道題目,部分是有鎖題,我們將先把所有不帶鎖的題目刷完。

在這個系列文章里面,除了講解解題思路以外,還會盡可能給出最為簡潔的代碼。如果涉及通解還會相應(yīng)的代碼模板。

為了方便各位同學(xué)能夠電腦上進(jìn)行調(diào)試和提交代碼,我建立了相關(guān)的倉庫:github.com/SharingSour… 。

以上就是java LeetCode普通字符串模擬題解示例的詳細(xì)內(nèi)容,更多關(guān)于java LeetCode普通字符串的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java面向?qū)ο蠡A(chǔ)詳解

    Java面向?qū)ο蠡A(chǔ)詳解

    這篇文章主要介紹了JJava面向?qū)ο蟮幕A(chǔ),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-10-10
  • Java多線程死鎖與資源限制操作

    Java多線程死鎖與資源限制操作

    這篇文章主要介紹了Java多線程死鎖與資源限制操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 在同一個類中調(diào)用帶有@Transactional注解的方法示例

    在同一個類中調(diào)用帶有@Transactional注解的方法示例

    這篇文章主要為大家介紹了在同一個類中調(diào)用帶有@Transactional注解的方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 深入了解Java核心類庫--BigDecimal和System類

    深入了解Java核心類庫--BigDecimal和System類

    這篇文章主要為大家詳細(xì)介紹了javaBigDecimal和System類定義與使用的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能給你帶來幫助
    2021-07-07
  • JAVA中Integer值的范圍實例代碼

    JAVA中Integer值的范圍實例代碼

    這篇文章主要介紹了JAVA中Integer值的范圍實例代碼,需要的朋友可以參考下
    2017-09-09
  • Java結(jié)構(gòu)型設(shè)計模式之享元模式示例詳解

    Java結(jié)構(gòu)型設(shè)計模式之享元模式示例詳解

    享元模式(FlyWeight?Pattern),也叫蠅量模式,運用共享技術(shù),有效的支持大量細(xì)粒度的對象,享元模式就是池技術(shù)的重要實現(xiàn)方式。本文將通過示例詳細(xì)講解享元模式,感興趣的可以了解一下
    2022-09-09
  • Java日常練習(xí)題,每天進(jìn)步一點點(24)

    Java日常練習(xí)題,每天進(jìn)步一點點(24)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • Java將CSV的數(shù)據(jù)發(fā)送到kafka的示例

    Java將CSV的數(shù)據(jù)發(fā)送到kafka的示例

    這篇文章主要介紹了Java將CSV的數(shù)據(jù)發(fā)送到kafka得示例,幫助大家更好得理解和使用Java,感興趣的朋友可以了解下
    2020-11-11
  • Java編程代碼性能優(yōu)化

    Java編程代碼性能優(yōu)化

    本文介紹了 Java 代碼優(yōu)化的過程,總結(jié)了優(yōu)化 Java 程序的一些最佳實踐,分析了進(jìn)行優(yōu)化的方法,并解釋了性能提升的原因,需要的朋友可以參考下
    2015-11-11
  • java基礎(chǔ)之初始化ArrayList時直接賦值的4種方式總結(jié)

    java基礎(chǔ)之初始化ArrayList時直接賦值的4種方式總結(jié)

    ArrayList是Java中的一個類,它是Java集合框架中的一部分,用于實現(xiàn)動態(tài)數(shù)組,下面這篇文章主要給大家介紹了關(guān)于java基礎(chǔ)之初始化ArrayList時直接賦值的4種方式,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07

最新評論

海口市| 新野县| 闸北区| 马公市| 襄垣县| 泉州市| 黄浦区| 黔西| 密山市| 资源县| 茌平县| 大冶市| 荆门市| 曲沃县| 广元市| 修文县| 武隆县| 分宜县| 金寨县| 隆化县| 桂阳县| 孙吴县| 社会| 舟曲县| 广安市| 东乡县| 东兴市| 米脂县| 雷波县| 安丘市| 香港 | 达州市| 周宁县| 青浦区| 竹山县| 丘北县| 漳州市| 招远市| 平远县| 蕲春县| 鹤山市|