zoukankan      html  css  js  c++  java
  • 1160. Find Words That Can Be Formed by Characters

    package LeetCode_1160
    
    /**
     * 1160. Find Words That Can Be Formed by Characters
     * https://leetcode.com/problems/find-words-that-can-be-formed-by-characters/
     * You are given an array of strings words and a string chars.
    A string is good if it can be formed by characters from chars (each character can only be used once).
    Return the sum of lengths of all good strings in words.
    
    Example 1:
    Input: words = ["cat","bt","hat","tree"], chars = "atach"
    Output: 6
    Explanation:
    The strings that can be formed are "cat" and "hat" so the answer is 3 + 3 = 6.
    
    Example 2:
    Input: words = ["hello","world","leetcode"], chars = "welldonehoneyr"
    Output: 10
    Explanation:
    The strings that can be formed are "hello" and "world" so the answer is 5 + 5 = 10.
    
    Note:
    1. 1 <= words.length <= 1000
    2. 1 <= words[i].length, chars.length <= 100
    3. All strings contain lowercase English letters only.
     * */
    class Solution {
        /*
        * solution: Array, keep tracking if letter match,
        * Time:O(m*n), Space:O(1), m: size of words, n: longest length of word
        * */
        fun countCharacters(words: Array<String>, chars: String): Int {
            var result = 0
            //just handling lowercase
            val map = IntArray(26)
            for (c in chars) {
                map[c - 'a']++
            }
            for (word in words) {
                val map2 = map.clone()
                //current word's length
                var curLength = 0
                for (c in word) {
                    //if match one character,curLength++
                    if (map2[c - 'a'] > 0) {
                        map2[c - 'a']--
                        curLength++
                    }
                }
                if (curLength == word.length) {
                    result += curLength
                }
            }
            return result
        }
    }
  • 相关阅读:
    第十二章类的无参方法
    第十三章人机猜拳
    第十一章类和对象
    面向对象七大原则。
    深入类的方法。
    使用集合组织相关数据。
    .NET框架
    C#数据类型
    错误。
    实现Windows的数据绑定
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14312722.html
Copyright © 2011-2022 走看看