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
        }
    }
  • 相关阅读:
    201521123065《java程序设计》第14周学习总结
    201521123065《java程序设计》第13周学习总结
    201521123065《java程序设计》第12周学习总结
    选择器
    浮动布局
    定位布局—position
    软工个人总结
    个人作业4——alpha阶段个人小结
    软件工程个人作业3
    结队编程
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14312722.html
Copyright © 2011-2022 走看看