LeetCode in Kotlin

916. Word Subsets

Medium

You are given two string arrays words1 and words2.

A string b is a subset of string a if every letter in b occurs in a including multiplicity.

A string a from words1 is universal if for every string b in words2, b is a subset of a.

Return an array of all the universal strings in words1. You may return the answer in any order.

Example 1:

Input: words1 = [“amazon”,”apple”,”facebook”,”google”,”leetcode”], words2 = [“e”,”o”]

Output: [“facebook”,”google”,”leetcode”]

Example 2:

Input: words1 = [“amazon”,”apple”,”facebook”,”google”,”leetcode”], words2 = [“l”,”e”]

Output: [“apple”,”google”,”leetcode”]

Constraints:

Solution

class Solution {
    fun wordSubsets(words1: Array<String>, words2: Array<String>): List<String> {
        val l1: MutableList<String> = ArrayList()
        val target = IntArray(26)
        for (s1 in words2) {
            val temp = IntArray(26)
            for (ch1 in s1.toCharArray()) {
                temp[ch1.code - 'a'.code]++
                target[ch1.code - 'a'.code] =
                    target[ch1.code - 'a'.code].coerceAtLeast(temp[ch1.code - 'a'.code])
            }
        }
        for (s1 in words1) {
            val count = IntArray(26)
            for (ch1 in s1.toCharArray()) {
                count[ch1.code - 'a'.code]++
            }
            if (checkIt(target, count)) {
                l1.add(s1)
            }
        }
        return l1
    }

    private fun checkIt(target: IntArray, count: IntArray): Boolean {
        for (i in 0..25) {
            if (count[i] < target[i]) {
                return false
            }
        }
        return true
    }
}
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy