java:不兼容的类型:char无法转换为java.lang.CharSequence
boolean checkParentheses(String str) {
Deque<Character> stack = new ArrayDeque<>();
String k = "({[";
String s = ")]}";
for (int i = 0; i < str.length();i++ ) {
if (k.contains(str.charAt(i))) {
stack.push(str.charAt(i));
} else if (s.contains(str.charAt(i))) {
if (matching(stack.peek()) == str.charAt(i)) {
return true;
}
} else {
return false;
}
}
}
我应该使用什么而不是包含?
答案 0 :(得分:2)
indexOf
。
这些方面的东西:
boolean checkParentheses(String str) {
Deque<Character> stack = new ArrayDeque<>();
String k = "({[";
String s = ")]}";
for (int i = 0; i < str.length();i++ ) {
if (k.indexOf(str.charAt(i)) > -1) {
stack.push(str.charAt(i));
} else if (s.indexOf(str.charAt(i)) > -1) {
if (matching(stack.peek()) == str.charAt(i)) {
return true;
}
} else {
return false;
}
}
return false;
}
您还可以使用contains创建新String。但是这个选择不是那么好(更无效)。
第二个选项:
boolean checkParentheses(String str) {
Deque<Character> stack = new ArrayDeque<>();
String k = "({[";
String s = ")]}";
for (int i = 0; i < str.length(); i++) {
if (k.contains(String.valueOf(str.charAt(i)))) {
stack.push(str.charAt(i));
} else if (s.contains(String.valueOf(str.charAt(i)))) {
if (matching(stack.peek()) == str.charAt(i)) {
return true;
}
} else{
return false;
}
}
return false;
}
第二种选择相当丑陋。
答案 1 :(得分:0)
尝试使用indexOf而不是contains。包含需要一个String(AKA CharSequence),但你有一个char。您也可以参考:https://javamanikandan.blogspot.in/2018/01/java-string-indexof-method-example.html 和 https://javamanikandan.blogspot.in/2018/01/java-string-contains-method-explained.html
答案 2 :(得分:0)
试试这个
k.contains(""+str.charAt(i))
该方法包含使用String对象而非Char
的工作