字符串数组最大乘积

字符串数组最大乘积

问题

题目描述:字符串数组的字符串只含有小写字符。求解字符串数组中两个字符串长度的最大乘积,要求这两个字符串不能含有相同字符。

Given ["abcw", "baz", "foo", "bar", "xtfn", "abcdef"]
Return 16
The two words can be "abcw", "xtfn".

代码

本题主要问题是判断两个字符串是否含相同字符,由于字符串只含有小写字符,总共 26 位,因此可以用一个 32 位的整数来存储每个字符是否出现过。

public int maxProduct(String[] words) {
    int n = words.length;
    int[] val = new int[n];
    for (int i = 0; i < n; i++) {
        for (char c : words[i].toCharArray()) {
            val[i] |= 1 << (c - 'a');
        }
    }
    int ret = 0;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if ((val[i] & val[j]) == 0) {
                ret = Math.max(ret, words[i].length() * words[j].length());
            }
        }
    }
    return ret;
}

  转载请注明: ForwardXu 字符串数组最大乘积

 上一篇
找出数组中缺失的那个数 找出数组中缺失的那个数
找出数组中缺失的那个数问题 这个题目说的是,数组元素在 0-n 之间,但是有一个数是缺失的,要求找到这个缺失的数。 Input: [3,0,1] Output: 2 代码 两个相同的数异或的结果为 0,对所有数进行异或操作,最后的结果就是单
2019-01-05
下一篇 
判断一个数的位级表示是否不会出现连续的0和1 判断一个数的位级表示是否不会出现连续的0和1
判断一个数的位级表示是否不会出现连续的0和1问题 给定一个正整数,检查它是否有交替的位:也就是说,如果两个相邻的位总是有不同的值。 示例 1: Input: 5 Output: True Explanation: The binary re
2019-01-05
  目录