Java .contains 不能与 charAt 一起使用
Java .contains cannot be used with charAt
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;
}
}
}
我应该使用什么来代替包含?
尝试使用 indexOf 而不是 contains。包含需要一个字符串(又名 CharSequence),但你有一个字符。您也可以参考:https://javamanikandan.blogspot.in/2018/01/java-string-indexof-method-example.html
和
https://javamanikandan.blogspot.in/2018/01/java-string-contains-method-explained.html
indexOf
与 -1.
大致如下:
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 创建一个新的字符串。但是那个选项不是很好(更低效)。
第二个选项:
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;
}
第二个选项比较丑
试试这个
k.contains(""+str.charAt(i))
该方法包含适用于 String 对象而不是 Char
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;
}
}
}
我应该使用什么来代替包含?
尝试使用 indexOf 而不是 contains。包含需要一个字符串(又名 CharSequence),但你有一个字符。您也可以参考:https://javamanikandan.blogspot.in/2018/01/java-string-indexof-method-example.html 和 https://javamanikandan.blogspot.in/2018/01/java-string-contains-method-explained.html
indexOf
与 -1.
大致如下:
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 创建一个新的字符串。但是那个选项不是很好(更低效)。
第二个选项:
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;
}
第二个选项比较丑
试试这个
k.contains(""+str.charAt(i))
该方法包含适用于 String 对象而不是 Char