本文主要是介绍3种算法 - 查看拼写单词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 题目
- 解法一(固定数组)
- 解法二(Pythonic)
- 解法三(暴力法)
题目
给你一份『词汇表』(字符串数组) 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
所有字符串中都仅包含小写英文字母
解法一(固定数组)
思路:使用长度为26的数组记录各字符数量,依次对字符进行对比,使用26的前提是字符串仅包含26个英文字符,如果有其它字符,需要扩大长度,比如256(全部ascii)。相同的思路也可以使用HashTable(字典)的方式实现,即使用字符作为Key,字符个数作为Value,只是在对比前使用ContainsKey进行预判断。
- 通过字符减去’a’表示字符的索引,首先获取字典中每个字符个数
- 依次统计每个待检查字符串每个字符的个数
- 对每个字符个数进行验证,满足条件的字符串进行长度累计
- 时间复杂度:O(n)
- 空间复杂度:O(1)
public class Solution {
// author: suoxd123@126.compublic void CounterString(string str, int[] arr){//统计字符串中每个字符的个数Array.Clear(arr,0,arr.Length);foreach(char item in str
这篇关于3种算法 - 查看拼写单词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!