• 916. Word Subsets


    package LeetCode_916
    
    /**
     * 916. Word Subsets
     *https://leetcode.com/problems/word-subsets/description/
     *
     * We are given two arrays A and B of words.  Each word is a string of lowercase letters.
    Now, say that word b is a subset of word a if every letter in b occurs in a, including multiplicity.
    For example, "wrr" is a subset of "warrior", but is not a subset of "world".
    Now say a word a from A is universal if for every b in B, b is a subset of a.
    Return a list of all universal words in A.  You can return the words in any order.
    
    Example 1:
    Input: A = ["amazon","apple","facebook","google","leetcode"], B = ["e","o"]
    Output: ["facebook","google","leetcode"]
    
    Example 2:
    Input: A = ["amazon","apple","facebook","google","leetcode"], B = ["l","e"]
    Output: ["apple","google","leetcode"]
    
    Note:
    1 <= A.length, B.length <= 10000
    1 <= A[i].length, B[i].length <= 10
    A[i] and B[i] consist only of lowercase letters.
    All words in A[i] are unique: there isn't i != j with A[i] == A[j].
     * */
    class Solution {
        fun wordSubsets(A: Array<String>, B: Array<String>): List<String> {
            val result = ArrayList<String>()
            //for example B:"e","oo"
            //maxFrequency: 0,0,0,0,1,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,
            val maxFrequency = IntArray(26)
            for (str in B) {
                val strFrequency = countFrequency(str)
                for (i in 0 until 26) {
                    maxFrequency[i] = Math.max(maxFrequency[i], strFrequency[i])
                }
            }
    
            for (word in A) {
                val strFrequency = countFrequency(word)
                //B:"e","oo"
                //if the word in set A that this word's letter e's occur frequency is not less than 1 and
                //o's occur frequency not less than 2, than add to result
                for (i in 0 until 26) {
                    if (strFrequency[i] < maxFrequency[i]) {
                        break
                    }
                    if (i == 25) {
                        result.add(word)
                    }
                }
            }
            //println(result)
            return result
        }
    
        private fun countFrequency(word: String): IntArray {
            val result = IntArray(26)
            for (c in word) {
                result[c - 'a']++
            }
            return result
        }
    }
  • 相关阅读:
    git忽略.idea文件
    python pip获取所有已安装的第三包
    bootstrap最简单的导航条
    sencha architect开发sencha touch应用注意事项
    反编译sencha toucha打包的apk文件,修改应用名称支持中文以及去除应用标题栏
    TortoiseSVN文件夹及文件图标不显示解决方法
    sql server 约束 查找
    SQLSERVER金额转换成英文大写的函数
    JS把数字金额转换成中文大写数字的函数
    C#中将数字金额转成英文大写金额的函数
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/13200671.html
Copyright © 2020-2023  润新知