zoukankan      html  css  js  c++  java
  • leetcode刷题笔记318题 最大单词长度乘积

    leetcode刷题笔记318题 最大单词长度乘积

    源地址:318. 最大单词长度乘积

    问题描述:

    给定一个字符串数组 words,找到 length(word[i]) * length(word[j]) 的最大值,并且这两个单词不含有公共字母。你可以认为每个单词只包含小写字母。如果不存在这样的两个单词,返回 0。

    示例 1:

    输入: ["abcw","baz","foo","bar","xtfn","abcdef"]
    输出: 16
    解释: 这两个单词为 "abcw", "xtfn"。
    示例 2:

    输入: ["a","ab","abc","d","cd","bcd","abcd"]
    输出: 4
    解释: 这两个单词为 "ab", "cd"。
    示例 3:

    输入: ["a","aa","aaa","aaaa"]
    输出: 0
    解释: 不存在这样的两个单词。

    //核心问题: 判断两个单词之间的是否存在重复字母
    //核心思想: 使用一个32位数的每位的01情况标注当前字母是否出现
    //构建数组strArr存储每个单词的字母情况
    //当i对应的字母情况与j对应的字母情况取与不为0 则存在重复字母
    object Solution {
        def maxProduct(words: Array[String]): Int = {
            val strArr = Array.fill(words.length)(0)
            for (i <- 0 to words.length-1) {
                var temp = 0
                var word = words(i)
                for (char <- word){
                    temp |= (1 << (char - 'a'))
                }
                strArr(i) = temp
            }
    
            var res = 0
            for (i <- 0 to words.length-1) {
                for (j <- i+1 to words.length-1) {
                    if ((strArr(i) & strArr(j)) == 0){
                        res = math.max(res, words(i).length * words(j).length)
                    }
                }
            }
    
            return res
        }
    }
    
    func maxProduct(words []string) int {
        arrStr := make([]int, len(words))
        for i, word := range words {
            temp := 0
            for _, strChar :=  range word {
                temp |= (1 << (strChar - 'a'))
            }
            arrStr[i] = temp
        }
    
        res := 0
        for i := 0; i < len(words); i++ {
            for j := i+1; j < len(words); j++{
                if arrStr[i] & arrStr[j] == 0{
                    res = max(res, len(words[i]) * len(words[j]))
                }
            }
        }
        return res
    }
    
    func max(a, b int) int {
        if a > b {
            return a
        } else {
            return b
        }
    }
    
  • 相关阅读:
    springboot常见应用属性
    springboot日志
    springboot注解
    2018年5月26日笔记
    LAMP环境搭建与配置
    2018年5月24日笔记
    2018年5月22日笔记
    2018年5月19日笔记
    2018年5月17日笔记
    2018年5月15日笔记
  • 原文地址:https://www.cnblogs.com/ganshuoos/p/14105855.html
Copyright © 2011-2022 走看看