1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
import java.util.HashMap;
public class {
public int maxProduct(String[] words) { int[] masks = getMask(words); int max = 0; for (int i=1; i<words.length; i++){ for (int j=0; j<i; j++){ if ((masks[i] & masks[j]) == 0){ max = Math.max(max, words[i].length()+words[j].length()); } } } return max; }
public HashMap<Character, Integer> getBinaryMapping(){ HashMap<Character, Integer> mapping = new HashMap<>(); for (int i=0; i<26; i++){ mapping.put((char) ('a'+i), (1 << i)); } return mapping; }
public int[] getMask(String[] words){ int[] masks = new int[words.length]; HashMap<Character, Integer> mapping = getBinaryMapping(); for (int i=0; i<words.length; i++){ int mask = 0; for (char c: words[i].toCharArray()){ mask |= mapping.get(c); } masks[i] = mask; } return masks; } }
|
近期评论