摘要:將低位的二進(jìn)制數(shù)分別對(duì)應(yīng)字母,從而用二進(jìn)制數(shù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的。因此單詞對(duì)應(yīng)的二進(jìn)制數(shù)為那么比較兩個(gè)單詞是否有重復(fù)的字母只需要將二者的二進(jìn)制形式進(jìn)行操作即可。
題目要求
Given a string array words, find the maximum value of length(word[i]) * length(word[j]) where the two words do not share common letters. You may assume that each word will contain only lower case letters. If no such two words exist, return 0. Example 1: Given ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"] Return 16 The two words can be "abcw", "xtfn". Example 2: Given ["a", "ab", "abc", "d", "cd", "bcd", "abcd"] Return 4 The two words can be "ab", "cd". Example 3: Given ["a", "aa", "aaa", "aaaa"] Return 0 No such pair of words.
有一個(gè)字符串?dāng)?shù)組,從該字符串?dāng)?shù)組中找到兩個(gè)字符串,要求滿足這兩個(gè)字符串之間沒(méi)有相同的字母,同時(shí)它們的長(zhǎng)度的乘積最大。
思路和代碼這道題的重點(diǎn)在于如何優(yōu)化字符串的比較。直觀的來(lái)說(shuō),我們無(wú)法避開(kāi)復(fù)雜度為O(n^2)的循環(huán)因?yàn)楸仨氝M(jìn)行兩兩比較才能識(shí)別出最大的乘積。但是我們可以優(yōu)化字符串的比較。
既然只需要知道兩個(gè)字符串是否有相同的字母,那么我們可以采用一種數(shù)據(jù)結(jié)構(gòu)將每個(gè)單詞所有的字母記錄下來(lái)。這里采用的是二進(jìn)制數(shù)的形式。我們知道字母的數(shù)量不會(huì)超過(guò)26個(gè),因此我們使用32位的整數(shù)來(lái)存儲(chǔ)。將低26位的二進(jìn)制數(shù)分別對(duì)應(yīng)字母a-z,從而用二進(jìn)制數(shù)實(shí)現(xiàn)一個(gè)簡(jiǎn)單的map。
因此單詞ae對(duì)應(yīng)的二進(jìn)制數(shù)為00000000 00000000 00000000 00010001
那么比較兩個(gè)單詞是否有重復(fù)的字母只需要將二者的二進(jìn)制形式進(jìn)行&操作即可。如果沒(méi)有重復(fù)字母,則結(jié)果應(yīng)該為0.
public int maxProduct(String[] words) { int length = words.length; int[] wordToInt = new int[length]; for(int i = 0 ; i
想要了解更多開(kāi)發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/68775.html
摘要:題目鏈接除了用先處理之外,還可以用保存所有不含某個(gè)字母的,這么寫(xiě)。 Maximum Product of Word Lengths 題目鏈接:https://leetcode.com/problems... public class Solution { public int maxProduct(String[] words) { // bit array t...
摘要:前言從開(kāi)始寫(xiě)相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)懍F(xiàn)在翻起來(lái)覺(jué)得蠻亂的??赡艽蠹铱粗卜浅2环奖?。所以在這里做個(gè)索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開(kāi)始寫(xiě)leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒(méi)有按順序?qū)憽F(xiàn)在翻起來(lái)覺(jué)得蠻亂的??赡艽蠹铱粗卜浅2环奖恪K栽谶@里做個(gè)索引嘻嘻。 順序整理 1~50 1...
Problem Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1:Input: [1,2,3]Output: 6Example 2:Input: [1,2,3,4]Output: 24Note:The length of the ...
摘要:題目詳情輸入一個(gè)大小大于等于三的數(shù)組,給出其中任意三個(gè)數(shù)乘積中的最大乘積想法這道題最主要的是要考慮正負(fù)數(shù)的情況。如果全都是正數(shù)相乘比較大,就取三個(gè)最大值相乘即可。 題目詳情 Given an integer array, find three numbers whose product is maximum and output the maximum product.輸入一個(gè)大小大于...
摘要:在線網(wǎng)站地址我的微信公眾號(hào)完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個(gè)題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語(yǔ)言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號(hào): showImg(htt...
閱讀 1918·2021-09-22 15:45
閱讀 1728·2019-08-30 15:55
閱讀 1889·2019-08-29 11:16
閱讀 3371·2019-08-26 11:44
閱讀 797·2019-08-23 17:58
閱讀 2749·2019-08-23 12:25
閱讀 1701·2019-08-22 17:15
閱讀 3718·2019-08-22 16:09