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

Go Java算法最大單詞長度乘積示例詳解

 更新時(shí)間:2022年08月22日 15:41:46   作者:黃丫丫  
這篇文章主要為大家介紹了Go Java算法最大單詞長度乘積示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

最大單詞長度乘積

給你一個(gè)字符串?dāng)?shù)組 words ,找出并返回 length(words[i]) * length(words[j]) 的最大值,并且這兩個(gè)單詞不含有公共字母。如果不存在這樣的兩個(gè)單詞,返回 0 。

*示例 1:

輸入:words = ["abcw","baz","foo","bar","xtfn","abcdef"]

輸出:16

解釋:這兩個(gè)單詞為 "abcw", "xtfn"。

  • 示例 2:

輸入:words = ["a","ab","abc","d","cd","bcd","abcd"]

輸出:4

解釋:這兩個(gè)單詞為 "ab", "cd"。

  • 示例 3:

輸入:words = ["a","aa","aaa","aaaa"]

輸出:0

解釋:不存在這樣的兩個(gè)單詞。

方法一:位運(yùn)算(java)

為了得到最大單詞長度乘積,樸素的做法是,遍歷字符串?dāng)?shù)組 words 中的每一對(duì)單詞,判斷這一對(duì)單詞是否有公共字母,如果沒有公共字母,則用這一對(duì)單詞的長度乘積更新最大單詞長度乘積。

題目約定了每個(gè)單詞僅包含小寫字母,所以,我們可以將單詞中的每個(gè)字母都映射到一個(gè) int 類型的不同位上,這樣,就做到了每個(gè)單詞都對(duì)應(yīng)一個(gè) int 類型的數(shù)值,這樣的話,我們對(duì)比兩個(gè)單詞是否包含相同的字母,只需要把它們對(duì)應(yīng)的 int 數(shù)值做 & 運(yùn)算,看是不是等于 0 即可,如果等于 0 ,說明沒有相同的位是 1,也就不存在相同的字母。

這樣,我們?cè)诒容^兩個(gè)單詞是否沒有公共字母的時(shí)候只要直接按位與一下即可,沒有公共字母應(yīng)該得到的值是0,其他情況得到的值都不為零。

class Solution {
    public int maxProduct(String[] words) {
        Map<Integer, Integer> map = new HashMap<Integer, Integer>();
        int length = words.length;
        for (int i = 0; i < length; i++) {
            int mask = 0;
            String word = words[i];
            int wordLength = word.length();
            for (int j = 0; j < wordLength; j++) {
                mask |= 1 << (word.charAt(j) - 'a');
            }
            if (wordLength > map.getOrDefault(mask, 0)) {
                map.put(mask, wordLength);
            }
        }
        int maxProd = 0;
        Set<Integer> maskSet = map.keySet();
        for (int mask1 : maskSet) {
            int wordLength1 = map.get(mask1);
            for (int mask2 : maskSet) {
                if ((mask1 & mask2) == 0) {
                    int wordLength2 = map.get(mask2);
                    maxProd = Math.max(maxProd, wordLength1 * wordLength2);
                }
            }
        }
        return maxProd;
    }
}

l:數(shù)組中所有單詞的長度之和

n:數(shù)組長度

時(shí)間復(fù)雜度:o(l+n^2)

空間復(fù)雜度:o(n)

方法一:位運(yùn)算(go)

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

func maxProduct(words []string) int {
    hash := func(word string) int {
        res := 0
        for _, r := range word{
            res |= 1 << (r - 'a')
        }
        return res
    }
    m, ans := map[int]int{}, 0
    for _, word := range words {
        h := hash(word)
        if m[h] < len(word) {
            for other, v := range m {
                if((other & h) == 0){
                    if tmp := v * len(word); tmp > ans {
                        ans = tmp
                    }
                }
            }
            m[h] = len(word)
        }
    }
    return ans
}

l:數(shù)組中所有單詞的長度之和

n:數(shù)組長度

時(shí)間復(fù)雜度:o(l+n^2)

空間復(fù)雜度:o(n)

以上就是Go Java算法最大單詞長度乘積示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Go Java算法單詞長度乘積的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Golang之模糊測(cè)試工具的使用

    Golang之模糊測(cè)試工具的使用

    本文主要介紹了Golang之模糊測(cè)試工具的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 一文徹底理解Golang閉包實(shí)現(xiàn)原理

    一文徹底理解Golang閉包實(shí)現(xiàn)原理

    閉包對(duì)于一個(gè)長期寫Java的開發(fā)者來說估計(jì)鮮有耳聞,光這名字感覺就有點(diǎn)"神秘莫測(cè)"。這篇文章的主要目的就是從編譯器的角度來分析閉包,徹底搞懂閉包的實(shí)現(xiàn)原理,需要的可以參考一下
    2022-10-10
  • Golang中拼接字符串的6種方式性能對(duì)比

    Golang中拼接字符串的6種方式性能對(duì)比

    golang的string類型是不可修改的,對(duì)于拼接字符串來說,本質(zhì)上還是創(chuàng)建一個(gè)新的對(duì)象將數(shù)據(jù)放進(jìn)去,主要有6種拼接方式,下面小編就來為大家詳細(xì)講講吧
    2025-03-03
  • Go語言實(shí)現(xiàn)釘釘發(fā)送通知

    Go語言實(shí)現(xiàn)釘釘發(fā)送通知

    本文通過代碼給大家介紹了Go語言實(shí)現(xiàn)釘釘發(fā)送通知,代碼簡單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Go結(jié)構(gòu)體從基礎(chǔ)到應(yīng)用深度探索

    Go結(jié)構(gòu)體從基礎(chǔ)到應(yīng)用深度探索

    本文深入探討了結(jié)構(gòu)體的定義、類型、字面量表示和使用方法,旨在為讀者呈現(xiàn)Go結(jié)構(gòu)體的全面視角,通過結(jié)構(gòu)體,開發(fā)者可以實(shí)現(xiàn)更加模塊化、高效的代碼設(shè)計(jì),這篇文章旨在為您提供關(guān)于結(jié)構(gòu)體的深入理解,助您更好地利用Go語言的強(qiáng)大功能
    2023-10-10
  • Go中的gRPC入門教程詳解

    Go中的gRPC入門教程詳解

    本文詳細(xì)講解了Go中的gRPC入門教程,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Go語言開發(fā)區(qū)塊鏈只需180行代碼(推薦)

    Go語言開發(fā)區(qū)塊鏈只需180行代碼(推薦)

    這篇文章主要介紹了Go語言開發(fā)區(qū)塊鏈只需180行代碼,文章中將不會(huì)涉及工作量證明算法(PoW)以及權(quán)益證明算法(PoS)這類的共識(shí)算法。需要的朋友可以參考下
    2018-05-05
  • Go高級(jí)特性探究之處理1分鐘百萬請(qǐng)求詳解

    Go高級(jí)特性探究之處理1分鐘百萬請(qǐng)求詳解

    對(duì)于大型的互聯(lián)網(wǎng)應(yīng)用程序,如電商平臺(tái)、社交網(wǎng)絡(luò)、金融交易平臺(tái)等,每秒鐘都會(huì)收到大量的請(qǐng)求,那么Go是如何處理這些百萬請(qǐng)求的呢,下面就來和大家詳細(xì)講講
    2023-06-06
  • Go語言結(jié)構(gòu)體Go range的學(xué)習(xí)教程

    Go語言結(jié)構(gòu)體Go range的學(xué)習(xí)教程

    這篇文章主要為大家介紹了Go語言結(jié)構(gòu)體Go range的學(xué)習(xí)教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Golang動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)示例

    Golang動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)示例

    動(dòng)態(tài)數(shù)組能自動(dòng)調(diào)整大小,與靜態(tài)數(shù)組不同,其大小不固定,可根據(jù)需求變化,實(shí)現(xiàn)通常依賴于數(shù)據(jù)結(jié)構(gòu)如鏈表或數(shù)組加額外信息,本文就來介紹一下Golang動(dòng)態(tài)數(shù)組的實(shí)現(xiàn)示例,感興趣的可以了解一下
    2024-10-10

最新評(píng)論

龙井市| 安龙县| 东兴市| 金秀| 黄冈市| 武夷山市| 托克逊县| 江达县| 通城县| 毕节市| 西丰县| 永德县| 海安县| 牡丹江市| 岳池县| 山阳县| 邮箱| 合阳县| 石首市| 南通市| 图们市| 夏河县| 得荣县| 甘德县| 湖南省| 尼勒克县| 黔江区| 沈阳市| 金寨县| 水城县| 沛县| 兰考县| 溧阳市| 郁南县| 大竹县| 黔西县| 正安县| 泗洪县| 弥渡县| 玛沁县| 师宗县|