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
        }
    }
  • 相关阅读:
    Android error--No implementation found for native Lcomd
    【CareerCup】Trees and Graphs—Q4.3
    android 分享到QQ空间的全部操作
    ubuntu12.04安装翻译软件stardict及卸载
    Java获取当前操作系统的信息
    WebForm和MVC中都可以使用的路由
    使用 System.Transactions 进行事物管理
    .NET中四种常用事物
    sql语句:创建事物
    sql语句:CASE WHEN END 的用法
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14312722.html
Copyright © 2011-2022 走看看