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

Go Java算法之同構(gòu)字符串示例詳解

 更新時(shí)間:2022年08月16日 10:19:30   作者:黃丫丫  
這篇文章主要為大家介紹了Go Java算法之同構(gòu)字符串示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

同構(gòu)字符串

給定兩個(gè)字符串 s 和 t ,判斷它們是否是同構(gòu)的。

如果 s 中的字符可以按某種映射關(guān)系替換得到 t ,那么這兩個(gè)字符串是同構(gòu)的。

每個(gè)出現(xiàn)的字符都應(yīng)當(dāng)映射到另一個(gè)字符,同時(shí)不改變字符的順序。不同字符不能映射到同一個(gè)字符上,相同字符只能映射到同一個(gè)字符上,字符可以映射到自己本身。

  • 示例 1:

輸入:s = "egg", t = "add"

輸出:true

  • 示例 2:

輸入:s = "foo", t = "bar"

輸出:false

  • 示例 3:

輸入:s = "paper", t = "title"

輸出:true  

提示:

1 <= s.length <= 5 * 104

t.length == s.length

s 和 t 由任意有效的 ASCII 字符組成

方法一:哈希表(Java)

此題需要我們判斷 s 和 t 每個(gè)位置上的字符是否都一一對應(yīng),即 s 的任意一個(gè)字符被 t 中唯一的字符對應(yīng),同時(shí) t 的任意一個(gè)字符被 s 中唯一的字符對應(yīng)。這也被稱為「雙射」的關(guān)系。

以示例 2 為例,t 中的字符 a 和 r 雖然有唯一的映射 o,但對于 s 中的字符 o 來說其存在兩個(gè)映射 {a,r},故不滿足條件。

因此,我們維護(hù)兩張哈希表,第一張哈希表 s2t 以 s 中字符為鍵,映射至 t 的字符為值,第二張哈希表 t2s 以 t 中字符為鍵,映射至 s 的字符為值。

class Solution {
    public boolean isIsomorphic(String s, String t) {
        Map<Character, Character> s2t = new HashMap<Character, Character>();
        Map<Character, Character> t2s = new HashMap<Character, Character>();
        int len = s.length();
        for (int i = 0; i < len; ++i) {
            char x = s.charAt(i), y = t.charAt(i);
            if ((s2t.containsKey(x) && s2t.get(x) != y) || (t2s.containsKey(y) && t2s.get(y) != x)) {
                return false;
            }
            s2t.put(x, y);
            t2s.put(y, x);
        }
        return true;
    }
}

時(shí)間復(fù)雜度:O(N)

空間復(fù)雜度:O(1)

方法一:哈希表(Go)

具體的方法思路已經(jīng)在上文中表述,具體詳情請看上文內(nèi)容。

方法思路:

  • 定義兩個(gè)map容器用于存儲兩個(gè)字符串的映射關(guān)系map_s、map_t
    • map_s:以 s 中字符為鍵,映射至 t 的字符為值
    • map_t: 以 t 中字符為鍵,映射至 s 的字符為值
  • 遍歷字符串(兩個(gè)字符串長度相等同時(shí)遍歷)
  • 不斷更新兩張哈希表,如果出現(xiàn)沖突時(shí)說明兩個(gè)字符串無法構(gòu)成同構(gòu),返回 false。
  • 沖突定義:即當(dāng)前下標(biāo) index 對應(yīng)的字符 map_s[index] 已經(jīng)存在映射且不為 t[index] 或當(dāng)前下標(biāo) index 對應(yīng)的字符map_t[index] 已經(jīng)存在映射且不為 s[index]也就是代碼中的if判斷條件
func isIsomorphic(s, t string) bool {
    s2t := map[byte]byte{}
    t2s := map[byte]byte{}
    for i := range s {
        x, y := s[i], t[i]
        if s2t[x] > 0 && s2t[x] != y || t2s[y] > 0 && t2s[y] != x {
            return false
        }
        s2t[x] = y
        t2s[y] = x
    }
    return true
}

時(shí)間復(fù)雜度:O(N)

空間復(fù)雜度:O(1)

以上就是Go Java算法之同構(gòu)字符串示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go Java算法同構(gòu)字符串的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Golang中interface{}的注意事項(xiàng)

    詳解Golang中interface{}的注意事項(xiàng)

    學(xué)習(xí)?golang?,對于?interface{}?接口類型,我們一定繞不過,這篇文章咱們就來一起來看看?使用?interface{}?的時(shí)候,都有哪些注意事項(xiàng)吧
    2023-03-03
  • Go 語言中的指針的使用

    Go 語言中的指針的使用

    在Go語言中,指針是存儲另一變量內(nèi)存地址的變量,通過&操作符獲取變量地址,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-09-09
  • golang跳轉(zhuǎn)語句goto,break,continue的使用及區(qū)別說明

    golang跳轉(zhuǎn)語句goto,break,continue的使用及區(qū)別說明

    這篇文章主要介紹了golang跳轉(zhuǎn)語句goto,break,continue的使用及區(qū)別說明,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • go?tar包歸檔文件處理操作全面指南

    go?tar包歸檔文件處理操作全面指南

    這篇文章主要為大家介紹了使用go?tar包歸檔文件處理操作全面指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-12-12
  • Go語言實(shí)現(xiàn)控制臺輸入&生成隨機(jī)數(shù)詳解

    Go語言實(shí)現(xiàn)控制臺輸入&生成隨機(jī)數(shù)詳解

    這篇文章主要介紹了Go語言如何實(shí)現(xiàn)控制臺輸入&生成隨機(jī)數(shù),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 詳解golang的切片擴(kuò)容機(jī)制

    詳解golang的切片擴(kuò)容機(jī)制

    golang的切片擴(kuò)容機(jī)制是golang面試者繞不開的一扇大門,無論在面試提問,或者面試情景上都繞不開它,今天就說說我理解下的切片擴(kuò)容機(jī)制,感興趣的小伙伴跟著小編一起來看看吧
    2023-07-07
  • Go每日一庫之quicktemplate的使用

    Go每日一庫之quicktemplate的使用

    quicktemplate快速、功能強(qiáng)大、易于使用的Go模板引擎。比html/模板快20倍,本文我們就詳細(xì)的介紹一下quicktemplate的具體使用,感興趣的可以了解一下
    2021-07-07
  • 超全講解Golang中defer關(guān)鍵字的用法

    超全講解Golang中defer關(guān)鍵字的用法

    本文將從一個(gè)資源回收問題引入,引出defer關(guān)鍵字,并對其進(jìn)行基本介紹,從而讓大家對Go語言中的defer有更深入的了解,需要的小伙伴可以學(xué)習(xí)一下
    2023-05-05
  • 深入Golang的接口interface

    深入Golang的接口interface

    這篇文章主要介紹了深入Golang的接口interface,go不要求類型顯示地聲明實(shí)現(xiàn)了哪個(gè)接口,只要實(shí)現(xiàn)了相關(guān)的方法即可,編譯器就能檢測到,接下來關(guān)于接口interface的相關(guān)介紹需要的朋友可以參考下面文章內(nèi)容
    2022-06-06
  • node-exporter被檢測出來pprof調(diào)試信息泄露漏洞問題

    node-exporter被檢測出來pprof調(diào)試信息泄露漏洞問題

    這篇文章主要介紹了node-exporter被檢測出來pprof調(diào)試信息泄露漏洞問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論

新安县| 洪湖市| 金门县| 承德县| 新营市| 五家渠市| 襄垣县| 茶陵县| 宜丰县| 大石桥市| 美姑县| 汉沽区| 平顶山市| 玛沁县| 都昌县| 甘泉县| 炎陵县| 个旧市| 武安市| 朔州市| 长治县| 闻喜县| 津南区| 虎林市| 当雄县| 通化县| 扎赉特旗| 温泉县| 类乌齐县| 蒲城县| 盐津县| 谢通门县| 德保县| 杭锦后旗| 洪雅县| 十堰市| 贵德县| 和政县| 高密市| 襄汾县| 长垣县|