java - 如何使用此方法检查给定字符串中的字符是否可以拼写另一个字符串中的单词?
问题描述
public static String removeChar(String tiles, char ch) {
String removedWord = "";
int single = 0;
for(int i = 0; i < tiles.length();i++) {
if(tiles.charAt(i) != ch || single == 1) {
removedWord = removedWord + tiles.charAt(i);
}else if(single == 0) {
removedWord = removedWord + "";
single++;
}
}return removedWord;
}
我必须创建一个方法来检查字符串中的字符是否可以拼写另一个字符串中的单词,例如
- canSpell("WQXOACW","COW") --> true
- canSpell("WQXOACW","PIG") --> false
- canSpell("","PIG") --> false
- canSpell("WESCQSI","") --> true
- canSpell("","") --> 真
我必须使用上面的 removeChar 方法。我不能使用子字符串。请帮忙,我已经为此工作了好几天,但无法弄清楚
解决方案
第一个参数——字符集
第二个参数——单词
您想循环遍历第二个参数中的所有字符,然后检查当前字符被循环的频率是否大于第一个参数中当前字符的频率。如果是,那么我们知道我们没有足够的字符来构造那个词。
例如,假设我们的字符集是WQXOACW
并且要构造的词是COW
。我们遍历 中的每个字符COW
,并检查每个字符出现的次数。C
出现一次。然后我们检查C
字符集中的频率。在这种情况下,它也是 1。如果它更小(例如,0),那么我们会知道我们没有足够的字符来创建单词,因为我们没有足够的字符,所以我们返回false
。
public static boolean canSpell(String scrambled, String target) {
int tlength = target.length();
for(int i = 0; i < tlength; i++) {
char c= target.charAt(i);
if(frequency(target,c) > frequency(scrambled,c)) {
return false;
}
}
return true;
}
public static int frequency(String scrambled, char c) {
int l = scrambled.length();
int s = 0;
for(int i = 0; i < l; i++) {
s = s + (scrambled.charAt(i) == c ? 1 : 0);
}
return s;
}
测试运行
canSpell("WQXOACW","COW") //true
canSpell("WQXOACW","CO") //true
canSpell("WQXOACW","COWWW") //false
为了进一步优化效率(在上面的代码中,我们碰巧检查了相同字符出现多次的频率),我们可以使用以下方法删除字符串中的所有重复字母:
public String removeDuplicates(String input){
String result = "";
for (int i = 0; i < input.length(); i++) {
if(!result.contains(String.valueOf(input.charAt(i)))) {
result += String.valueOf(input.charAt(i));
}
}
return result;
}
推荐阅读
- javascript - 将文本框提示输入与正则表达式模式匹配
- flutter - 'Scaffold.geometryOf() 调用的上下文不包含脚手架' 使用英雄动画
- css - 如何三角形顶部和底部边框?
- python - 有没有一种方便的方法来重绘实时数据的绘图图(matlibplot,python2.7)?
- dart - 购物车的 Bloc 柜台
- angular - *ngFor trackby 返回一个常量,总是一样的,它会产生什么错误?
- javascript - 如何在 JavaScript 中将 1 和 0 的数组转换为 ByteArray 或 Integer
- python - 通过python for循环获取无效的json文件
- laravel - 计算行数并将其显示在我的视图中
- django - Django:避免基于聚合的字段的竞争条件