摘要:將低位的二進制數(shù)分別對應(yīng)字母,從而用二進制數(shù)實現(xiàn)一個簡單的。因此單詞對應(yīng)的二進制數(shù)為那么比較兩個單詞是否有重復(fù)的字母只需要將二者的二進制形式進行操作即可。
題目要求
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.
有一個字符串?dāng)?shù)組,從該字符串?dāng)?shù)組中找到兩個字符串,要求滿足這兩個字符串之間沒有相同的字母,同時它們的長度的乘積最大。
思路和代碼這道題的重點在于如何優(yōu)化字符串的比較。直觀的來說,我們無法避開復(fù)雜度為O(n^2)的循環(huán)因為必須進行兩兩比較才能識別出最大的乘積。但是我們可以優(yōu)化字符串的比較。
既然只需要知道兩個字符串是否有相同的字母,那么我們可以采用一種數(shù)據(jù)結(jié)構(gòu)將每個單詞所有的字母記錄下來。這里采用的是二進制數(shù)的形式。我們知道字母的數(shù)量不會超過26個,因此我們使用32位的整數(shù)來存儲。將低26位的二進制數(shù)分別對應(yīng)字母a-z,從而用二進制數(shù)實現(xiàn)一個簡單的map。
因此單詞ae對應(yīng)的二進制數(shù)為00000000 00000000 00000000 00010001
那么比較兩個單詞是否有重復(fù)的字母只需要將二者的二進制形式進行&操作即可。如果沒有重復(fù)字母,則結(jié)果應(yīng)該為0.
public int maxProduct(String[] words) { int length = words.length; int[] wordToInt = new int[length]; for(int i = 0 ; i
想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/68775.html
摘要:題目鏈接除了用先處理之外,還可以用保存所有不含某個字母的,這么寫。 Maximum Product of Word Lengths 題目鏈接:https://leetcode.com/problems... public class Solution { public int maxProduct(String[] words) { // bit array t...
摘要:前言從開始寫相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時也沒有按順序?qū)懍F(xiàn)在翻起來覺得蠻亂的??赡艽蠹铱粗卜浅2环奖?。所以在這里做個索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時也沒有按順序?qū)憽F(xiàn)在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個索引嘻嘻。 順序整理 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 ...
摘要:題目詳情輸入一個大小大于等于三的數(shù)組,給出其中任意三個數(shù)乘積中的最大乘積想法這道題最主要的是要考慮正負數(shù)的情況。如果全都是正數(shù)相乘比較大,就取三個最大值相乘即可。 題目詳情 Given an integer array, find three numbers whose product is maximum and output the maximum product.輸入一個大小大于...
摘要:在線網(wǎng)站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
閱讀 1868·2021-09-22 15:45
閱讀 1652·2019-08-30 15:55
閱讀 1838·2019-08-29 11:16
閱讀 3312·2019-08-26 11:44
閱讀 714·2019-08-23 17:58
閱讀 2703·2019-08-23 12:25
閱讀 1637·2019-08-22 17:15
閱讀 3615·2019-08-22 16:09