【发布时间】:2022-01-17 16:14:52
【问题描述】:
我一直在尝试看看是否有办法通过双循环来解决这个问题。循环遍历数组中的每个单词并检查提供的所有字符是否都存在于该单词中。
键盘损坏问题:
输入 A =“你好,我亲爱的朋友!”
输入 B = ['h', 'e', 'l, 'o', 'm']
我们这里的键盘坏了,其中只有列表 B 中的字母键(小写和大写)、数字键和标点键起作用。
编写一个函数,它接受一个字符串 A 和一个字符 B 的列表,并返回我们可以输入多少个单词。
解释 输入:A “你好,我亲爱的朋友!”,B = ['h', 'e', 'l, 'o', 'm'] 输出:1
解释:对于第一个单词“Hello”(包括逗号),我们可以找到列表 B 中的每个字符。 由于所有标点键都可以正常工作,所以输出++。
对于第二个单词“my”,我们只能在列表 B 中找到 char 'm',因此无法输入整个单词。然后同样,“亲爱的”,找不到char 'd',所以继续; “朋友!”,找不到字符'f',所以继续;
这是我迄今为止尝试过的,但我不能使用 String 的 .contain() 方法,因为它只接受 char 序列而不是 char 数组。如何使用 JAVA 检查每个单词的字符数组?
提前致谢,感谢任何支持。
public class BrokenKeyboard
{
public static void main(String[] args)
{
String stringText = "Hello my dear friend";
char [] charLetterArray = {'h', 'e', 'l', 'o', 'm'};
howManyWordsCalc(stringText, charLetterArray);
}
// Only words from stringText that can be typed in whole should be printed.
// If the letters present in the word aren't present in charLetterArray they don't get printed
public static int howManyWordsCalc(String text, char[] letters)
{
int wordCount = 0;
// sanitise input
if (text.isEmpty())
{
return 0;
}
else
{
text = text.toLowerCase();
String[] stringSeparated = text.split(" ");
for (int i = 0; i < stringSeparated.length; i++)
{
System.out.println(stringSeparated[i]);
for (int j = 0; j < letters.length; j++)
{
// stringSeparated[i].contains(letters)
if (stringSeparated[i].contains())
{
wordCount++;
}
}
}
return wordCount;
}
}
}
【问题讨论】:
-
可以将char转成字符串
String.contains(Character.toString(c))