国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

記錄一道使用位操作符的字符串比較算法

QiuyueZhong / 1457人閱讀

摘要:是按位或二進(jìn)制編碼中,每一位兩者其中一個(gè)為,則為,否則,則為,因此就是對(duì)每一個(gè)字符合并,例如是,是,也是,是,是。

原題目:
給定一個(gè)字符串?dāng)?shù)組,找到長度的最大值length(word[i]) * length(word[j]),其中兩個(gè)單詞中的字母無相同。您可以假定每個(gè)單詞只包含小寫字母。如果沒有這兩個(gè)詞,返回0。

例:

Input: ["abcw","baz","foo","bar","xtfn","abcdef"]
Output: 16 
Explanation: The two words can be "abcw", "xtfn".

解析:
這題肯定要進(jìn)行交叉對(duì)比(2個(gè)for循環(huán)),但最關(guān)鍵的就是對(duì)比過程,也就是判斷2個(gè)字符串是否存在相同的字符。

如果使用indexOf或者數(shù)組下標(biāo)記錄都會(huì)造成時(shí)間復(fù)雜度大幅提升,看了他人的答案發(fā)現(xiàn)使用的是位操作符<<|&,而且是在交叉對(duì)比之前進(jìn)行預(yù)處理,交叉對(duì)比的時(shí)候只需要簡單的判斷pretreate[i] & pretreate[j]===0便可,

因?yàn)槭褂煤笮侍嵘啵馕霾⑶矣涗浺幌隆?/p>

先解釋val |= (1 << (word.charCodeAt(i)-aCode))

word.charCodeAt(i)-aCode這個(gè)很好懂,也就是a對(duì)應(yīng)0,b對(duì)應(yīng)1...這里的0,1數(shù)字代表的是
二進(jìn)制1后面的位數(shù)。

1<<01<<1是什么呢?

1在二進(jìn)制中(32位)就是00000000000000000000000000000001<<是左移1位,

那么1<<0還是11<<1就是(前面的零省略)101<<2就是1001<<3就是1000

于是可知

a就是1

b10

c100...

z10000000000000000000000000(25個(gè)0)。

|是按位或:二進(jìn)制編碼中,每一位兩者其中一個(gè)為1,則為1,否則,則為0,

因此 val |=就是對(duì)每一個(gè)字符合并,例如

ab00010|00001=>00011

f100000

ffff 也是 100000

big101000010

axdg100000000000000001001001

&,按位與,二進(jìn)制編碼中,每一位兩者都為1,則為1,否則,則為0,

例1:axdgoigd要判斷是否有重復(fù):

axdg是:100000000000000001001001

oifd是:         100000100101000

& 后:  000000000000000000001000  

因?yàn)榈?位都為1,所以最后不為0,也可得知重復(fù)的就是字母表第4位:d
?
例2:axdglkmk要判斷是否有重復(fù):

結(jié)果為0,說明無重復(fù)。

axdg是:100000000000000001001001

lkmk是:           1110000000000

& 后:  000000000000000000000000  

總結(jié):這種方法使用了二進(jìn)制數(shù)字的位數(shù)作為保存字符的手段,相比起數(shù)組,散列表等,速度更快,在保存量較小(<=32)優(yōu)勢(shì)非常明顯。

代碼:

/**
 * @param {string[]} words
 * @return {number}
 */
var maxProduct = function(words) {
    let aCode="a".charCodeAt(0)
    function compute(word){
        let val=0
        for(let i=0;imaxSum && (pretreatment[i] & pretreatment[j])===0){
                 maxSum=len1*len2
            }
        }
    }
    return maxSum
};

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/97479.html

相關(guān)文章

  • 一道有意思面試算法

    摘要:解決方案異或操作異或運(yùn)算是對(duì)于二進(jìn)制數(shù)字而言的,比如說一個(gè)有兩個(gè)二進(jìn)制,如果兩個(gè)值不相同,則異或結(jié)果為。比如說,本質(zhì)上其實(shí)是和的每一對(duì)比特位執(zhí)行異或操作,等價(jià)于下面數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)字對(duì)應(yīng)的二進(jìn)制數(shù)字對(duì)應(yīng)的二進(jìn)制因此的結(jié)果就為啦。 新年第一篇文章,先祝大家新年快樂!!那么接下來進(jìn)入正文。 前言 前陣子突發(fā)奇想,突然開始刷leetcode。其中刷到了一道有意思的題目,發(fā)現(xiàn)這道題是當(dāng)時(shí)秋招...

    maxmin 評(píng)論0 收藏0
  • 算法技巧】運(yùn)算裝逼指南

    摘要:位算法的效率有多快我就不說,不信你可以去用億個(gè)數(shù)據(jù)模擬一下,今天給大家講一講位運(yùn)算的一些經(jīng)典例子。不過,最重要的不是看懂了這些例子就好,而是要在以后多去運(yùn)用位運(yùn)算這些技巧,當(dāng)然,采用位運(yùn)算,也是可以裝逼的,不信,你往下看。位算法的效率有多快我就不說,不信你可以去用 10 億個(gè)數(shù)據(jù)模擬一下,今天給大家講一講位運(yùn)算的一些經(jīng)典例子。不過,最重要的不是看懂了這些例子就好,而是要在以后多去運(yùn)用位運(yùn)算這...

    _ang 評(píng)論0 收藏0
  • 一道看似簡單面試題

    摘要:二進(jìn)制本身就是為這個(gè)數(shù)字而使用的,所以說這道面試題直指二進(jìn)制的使用是沒錯(cuò)的。正負(fù)在二進(jìn)制中,第一位為的是負(fù)數(shù),是正數(shù)。 showImg(https://segmentfault.com/img/bVbd7d0?w=1580&h=732); 前言 使用PHP,給定一個(gè)數(shù),判斷這個(gè)數(shù)是否是二的N次方 這樣看似簡單的一個(gè)面試題, 實(shí)際牽出了很多基礎(chǔ)知識(shí),本章在為大家補(bǔ)習(xí)基礎(chǔ)知識(shí)的情況下來解答...

    kid143 評(píng)論0 收藏0
  • 由三道 LeetCode 題目簡單了解一下運(yùn)算

    摘要:使用位運(yùn)算數(shù)組只出現(xiàn)一次數(shù)字的數(shù)組得到最低的有效位,即兩個(gè)數(shù)不同的那一位看完上面的解法,我腦海中只有問號(hào)的存在,啥意思啊下面就讓我們簡單了解一下位運(yùn)算并解析一下這三道題目。另,負(fù)數(shù)按補(bǔ)碼形式參加按位與運(yùn)算。你可做過這幾道題? 在面試的準(zhǔn)備過程中,刷算法題算是必修課,當(dāng)然我也不例外。某天,我刷到了一道神奇的題目: # 136. 只出現(xiàn)一次的數(shù)字 給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只出現(xiàn)一次以外...

    daydream 評(píng)論0 收藏0
  • 由三道 LeetCode 題目簡單了解一下運(yùn)算

    摘要:簡單介紹一下位運(yùn)算異或運(yùn)算異或邏輯的關(guān)系是當(dāng)不同時(shí),輸出當(dāng)相同時(shí),輸出。另,負(fù)數(shù)按補(bǔ)碼形式參加按位與運(yùn)算。使一個(gè)數(shù)的最低位為零,可以表示為。,截止到這兒,三道題目中使用的位運(yùn)算介紹完畢,那么這里我們插入一下的詳細(xì)題解。你可做過這幾道題? 在面試的準(zhǔn)備過程中,刷算法題算是必修課,當(dāng)然我也不例外。某天,我刷到了一道神奇的題目: # 136. 只出現(xiàn)一次的數(shù)字 給定一個(gè)非空整數(shù)數(shù)組,除了某個(gè)元素只...

    劉明 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<