一道基数排序的简单题目
题目描述
难度:简单
题目描述:给你一份单词表words(字符串数组)和一个字符序列strs(字符串)
假如你可以用strs拼写出words中的某个单词,那么就可以认为你掌握了这个单词。假设字母都是小写,请返回words中你能够掌握的所有单词的长度。
注意:字符序列里的字符只能用一次
参考代码
/**
* Created by Lingluo on 2020/7/5.
* 难度:简单
* 题目描述:给你一份单词表words(字符串数组)和一个字符序列strs(字符串)
* 假如你可以用strs拼写出words中的某个单词,那么就可以认为你掌握了这个单词。
* 请返回words中你能够掌握的所有单词的长度。
* 注意:字符序列里的字符只能用一次
*/
public class WordsSolution2 {
public static int getLength(String[] words, String str) {
int length = 0;
char[] source = new char[26];
for (int i = 0; i < str.length(); i++) {
char[] ch = str.toCharArray();
int index = ch[i] - 'a';
source[index]++;
}
for (String word : words) {
boolean flag = true;
char[] target = new char[26];
char[] ch = word.toCharArray();
for (int i = 0; i < word.length(); i++) {
int index = ch[i] - 'a';
target[index]++;
}
for (int i = 0; i < word.length(); i++) {
int index = ch[i] - 'a';
if (source[index] < target[index]) {
flag = false;
}
}
if (flag) {
length += word.length();
}
}
return length;
}
public static void main(String[] args) {
String[] words = {"cat", "bt", "hat", "tree"};
String str = "atach";
System.out.println(getLength(words, str)); // 6
String[] words2 = {"hello", "hhello", "world", "leetcode"};
String str2 = "welldonehoneyr";
System.out.println(getLength(words2, str2)); // 10
}
}