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

    1160. Find Words That Can Be Formed by Characters(拼写单词)

    链接

    https://leetcode-cn.com/problems/find-words-that-can-be-formed-by-characters

    题目

    给你一份『词汇表』(字符串数组) words 和一张『字母表』(字符串) chars。

    假如你可以用 chars 中的『字母』(字符)拼写出 words 中的某个『单词』(字符串),那么我们就认为你掌握了这个单词。

    注意:每次拼写时,chars 中的每个字母都只能用一次。

    返回词汇表 words 中你掌握的所有单词的 长度之和。

    示例 1:

    输入:words = ["cat","bt","hat","tree"], chars = "atach"
    输出:6
    解释:
    可以形成字符串 "cat" 和 "hat",所以答案是 3 + 3 = 6。
    示例 2:

    输入:words = ["hello","world","leetcode"], chars = "welldonehoneyr"
    输出:10
    解释:
    可以形成字符串 "hello" 和 "world",所以答案是 5 + 5 = 10。

    提示:

    1 <= words.length <= 1000
    1 <= words[i].length, chars.length <= 100
    所有字符串中都仅包含小写英文字母

    思路

    仅包含小写字母,那么就可以拿数组存储,之后比较单词中各个字母数量和给的字母数量,全部满足才能成立,最后统计一下长度即可。

    代码

       public int countCharacters(String[] words, String chars) {
        int[] num = new int[26];
        int count = 0;
        getnum(chars, num);
        for (String s : words) {
          if (fit(s, num)) {
            count += s.length();
          }
        }
        return count;
      }
    
      public void getnum(String chars, int[] num) {
        StringBuffer str = new StringBuffer(chars);
        for (int i = 0; i < str.length(); i++) {
          num[str.charAt(i) - 'a']++;
        }
      }
    
      public boolean fit(String word, int[] num) {
        int[] wordnum = new int[26];
        getnum(word, wordnum);
        boolean flag = true;
        for (int i = 0; i < 26; i++) {
          if (wordnum[i] > num[i]) {
            flag = false;
          }
        }
        return flag;
      }
    
  • 相关阅读:
    MySQL 之 创建千万数据测试
    MySQL中的各种引擎
    MySQL 之【约束】【数据库设计】
    MySQL 的增删改查
    SQL数据类型
    SQL 数据类型
    数据库
    摘要算法
    Python 标准库-json
    Python 标准库-sys
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12509660.html
Copyright © 2011-2022 走看看