zoukankan      html  css  js  c++  java
  • LeetCode Maximum Product of Word Lengths

    原题链接在这里:https://leetcode.com/problems/maximum-product-of-word-lengths/

    用mark[i]数组来标记 words[i]都含有哪些字母,假若有个'c', 就在第三位上有个1. 

    通过mark[i] & mark[j] 是否为0来确定是否有相同的字母。

    排序words是为了能尽量节省一些时间,去掉没有意义的比较。

    Time Complexity: O(n^2), n是有多少个string.

    Space: O(n), 生成了mark.

    AC Java:

     1 public class Solution {
     2     public int maxProduct(String[] words) {
     3         if(words == null || words.length == 0){
     4             return 0;
     5         }
     6         
     7         //排序words, 按照长度大到小, 为了后面节省时间
     8         Arrays.sort(words, new Comparator<String>(){
     9             public int compare(String s1, String s2){
    10                 return s2.length() - s1.length();
    11             }
    12         });
    13         
    14         int [] mark = new int[words.length];
    15         for(int i = 0; i<words.length; i++){
    16             for(int j = 0; j<words[i].length(); j++){
    17                 mark[i] |= (1 << words[i].charAt(j)-'a');
    18             }
    19         }
    20         
    21         int res = 0;
    22         for(int i = 0; i<words.length; i++){
    23             if(words[i].length() * words[i].length() <= res){
    24                 //因为words已经按照长度大到小排序了,若是words[i]长度平方还小于res, 后面的更小
    25                 break;
    26             }
    27             for(int j = i+1; j<words.length; j++){
    28                 if((mark[i] & mark[j]) == 0){
    29                     res = Math.max(res, words[i].length() * words[j].length());
    30                     //后面更小,没有必要继续了
    31                     break;
    32                 }
    33             }
    34         }
    35         
    36         return res;
    37     }
    38 }
  • 相关阅读:
    读写文件print函数操作
    协程相关
    线程池
    多线程条件
    ibm动态测试
    ubuntu 之 搜狗拼音安装
    Linux 安装 出现Could not get lock /var/lib/dpkg/lock
    Sql server
    maven 搭建
    EOS
  • 原文地址:https://www.cnblogs.com/Dylan-Java-NYC/p/5150795.html
Copyright © 2011-2022 走看看