如果字符串可以由字符中的字符组成,则字符串是好的。我想返回所有好的字符串的长度之和。
输入:words = [“ cat”,“ bt”,“ hat”,“ tree”],chars =“ atach”
输出:6
说明: 可以形成的字符串是“ cat”和“ hat”,因此答案是3 + 3 = 6。
下面是我编写的代码。
class Solution
{
public int countCharacters(String[] words, String chars)
{
int k = 0, count = 0;
Set<Character> set = new HashSet<>();
for(int i = 0; i < chars.length(); i++)
{
set.add(chars.charAt(i));
}
StringBuilder chrs = new StringBuilder();
for(Character ch : set)
{
chrs.append(ch);
}
for(int i = 0; i < words.length; i++)
{
char[] ch = words[i].toCharArray();
for(int j = 0; j < ch.length; j++)
{
if(chrs.contains("" + ch[j]))
{
k++;
}
}
if(k == words[i].length())
{
count+= k;
}
}
return count;
}
}
Output:
Line 24: error: cannot find symbol
if(chrs.contains("" + ch[j]))
有人可以帮助我吗?访问角色时我做错了什么?
答案 0 :(得分:0)
contains
告诉您另一个 string 中是否包含 string 。但是在您的情况下,ch[j]
不是字符串而是字符,因此您不能使用contains
。
相反,使用indexOf
,如果字符串中不存在char,它将返回-1
。
答案 1 :(得分:0)
最简单的方法是
chars.contains("" + ch[i]);
答案 2 :(得分:0)
在这里,ch[j]
不是字符串而是一个字符,因此您不能像完成那样使用contains。而是进行以下更改。
chars.contains(String.valueOf(ch[j]));
答案 3 :(得分:0)
我注意到的问题是您正在使用contains()
比较字符串和字符。但是contains()
方法是一种Java方法,用于检查String是否包含另一个子字符串。
因此您可以通过将字符转换为字符串来解决此问题。
示例1:
if(chars.contains(Character.toString(ch[j]))){
k++;
} else {
}
Ex 2:
f(chars.contains(""+ch[j]))
{
k++;
} else {
}
否则,您可以使用indexOf()
比较字符串是否包含字符。如果字符串不包含字符,则返回-1。请参阅下面的示例。
例如:
if(chars.indexOf(ch[j])!=-1){
k++;
} else {
}