"{[]}"true
"([)]"
false
"([]"
false
public boolean IsValidExp (String s) {
String left = "{[(";
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c2 = s.charAt(i);
if(stack.isEmpty() || left.contains(c2+"")){
stack.push(c2);
continue;
}else{
Character c1 = stack.peek();
if(c2=='}' && c1=='{'){
stack.pop();
}
if(c2==']' && c1=='['){
stack.pop();
}
if(c2==')' && c1=='('){
stack.pop();
}
}
}
return stack.isEmpty();
}
#
#
# @param s string字符串
# @return bool布尔型
#
class Solution:
def IsValidExp(self , s ):
# write code here
if s =="":
return True
while "{}" in s&nbs***bsp;"()" in s&nbs***bsp;"[]" in s:
s = s.replace('{}','')
s = s.replace('[]','')
s = s.replace('()','')
if s=='':
return True
else:
return False
class Solution {
public:
/**
*
* @param s string字符串
* @return bool布尔型
*/
bool IsValidExp(string s) {
// write code here
char fh[50];
strcpy(fh,s.c_str());
int len=strlen(fh);
if(len==0)
return true;
if(len%2!=0)
return false;
for(int i=0;i<len;i++)
{
if(fh[i]=='(')
{
if(i>=1)
{
if(fh[i-1]==' '&&fh[i+1]==' ')
return false;
}
for(int j=i+1;j<len;j++)
{
if(fh[j]==')')
{
fh[i]=' ';
fh[j]=' ';
break;
}
continue;
}
}
if(fh[i]=='[')
{
if(i>=1)
{
if(fh[i-1]==' '&&fh[i+1]==' ')
return false;
}
for(int j=i+1;j<len;j++)
{
if(fh[j]==']')
{
fh[i]=' ';
fh[j]=' ';
break;
}
continue;
} }
if(fh[i]=='{')
{
if(i>=1)
{
if(fh[i-1]==' '&&fh[i+1]==' ')
return false;
}
for(int j=i+1;j<len;j++)
{
if(fh[j]=='}')
{
fh[i]=' ';
fh[j]=' ';
break;
}
continue;
}
}
}
for(int i=0;i<len;i++)
{
if(fh[i]!=' ')
return false;
}
return true;
}
}; 遇到问题解决问题 哈哈哈 硬是没用任何数据结构(苦笑.jpg
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean IsValidExp (String s) {
// write code here
Stack<Character> stack = new Stack<>();
for(char ch : s.toCharArray()){
if(ch == '[') stack.push(']');
else if(ch == '(') stack.push(')');
else if(ch == '{') stack.push('}');
else if(stack.isEmpty() || !stack.pop().equals(ch)) return false;
}
return stack.isEmpty();
}
} import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean IsValidExp (String s) {
if(s.length()==1)return false;
LinkedList list=new LinkedList();
for(int i=0;i<s.length();i++){
if(s.charAt(i)=='('||s.charAt(i)=='['||s.charAt(i)=='{')
list.add(s.charAt(i));
if(s.charAt(i)==')'){
if(list.size()==0)return false;
char a=(char)list.pollLast();
if(a!='(')return false;
}
if(s.charAt(i)==']'){
if(list.size()==0)return false;
char a=(char)list.pollLast();
if(a!='[')return false;
}
if(s.charAt(i)=='}'){
if(list.size()==0)return false;
char a=(char)list.pollLast();
if(a!='{')return false;
}
}
return true;
}
} import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean IsValidExp (String s) {
if (s == null || s.length() == 0) {
return true;
}
if(s.length() % 2 == 1){
return false;
}
Deque<Character> dq = new ArrayDeque<>();
Map<Character, Character> map = new HashMap<>(3);
int n = s.length();
map.put('(',')');
map.put('[',']');
map.put('{','}');
for(char c : s.toCharArray()){
if(c == '(' || c == '{' || c=='['){
dq.add(c);
}else{
if(dq.isEmpty() || map.get(dq.pollLast()) != c){
return false;
}
}
}
return true;
}
}
func IsValidExp( s string ) bool {
// write code here
if s == "" {
return true
}
var stack []byte
for i:=0; i<len(s); i++ {
if s[i] == '{' {
stack = append(stack, '}')
}else if s[i] == '('{
stack = append(stack, ')')
}else if s[i] == '[' {
stack = append(stack, ']')
}else {
if len(stack) <= 0 {
return false
}
top := stack[len(stack)-1]
if top != s[i] {
return false
}
stack = stack[:len(stack)-1]
}
}
return len(stack) == 0
} // 9/10,剩下的不知道什么情况
import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean IsValidExp (String s) {
int len = s.length();
Stack<Character> stack = new Stack<>();
stack.push(s.charAt(0));
for (int i = 1; i < len; i++) {
char c = s.charAt(i);
if (stack.isEmpty()){
stack.push(c);
}else{
if (c == ')'){
if (stack.peek() !='('){
return false;
}else {
stack.pop();
}
}else
if (c == '}'){
if (stack.peek() !='{'){
return false;
}else {
stack.pop();
}
}else
if (c == ']'){
if (stack.peek() !='['){
return false;
}else {
stack.pop();
}
}else
stack.push(c);
}
}
if (stack.isEmpty()){
return true;
}
return false;
}
} import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean IsValidExp (String s) {
// write code here
Stack<String> stack = new Stack<String>();
if (s.length() == 0) {
return true;
}
for(int i=0;i<s.length();i++){
String input = s.substring(i,i+1);
if(input.equals("[") || input.equals("{") || input.equals("(")){
stack.push(input);
}else {
if(stack.size()==0){
return false;
}
String output = stack.pop();
switch (output){
case "{":
if(!input.equals("}")){
return false;
}
break;
case "[":
if(!input.equals("]")){
return false;
}
break;
case "(":
if(!input.equals(")")){
return false;
}
break;
}
}
}
return true;
}
} import java.util.Scanner;
import java.util.Stack;
public class 有效的括号 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNextLine()) {
String str = scanner.nextLine();
boolean valid = isValid(str);
System.out.println(valid);
}
scanner.close();
}
private static boolean isValid(String str) {
if(str == null) {
return false;
}
Stack<Character> stack = new Stack<>();
for(char ch: str.toCharArray()) {
if(!valid(ch)) {
return false;
}
if(isLeft(ch) || stack.isEmpty()) {
stack.push(ch);
} else {
Character left = stack.pop();
if(!isValid(left, ch)) {
stack.push(left);
stack.push(ch);
}
}
}
return stack.isEmpty();
}
private static boolean isValid(char left, char right) {
return (left == '(' && right == ')')
|| (left == '[' && right == ']')
|| (left == '{' && right == '}');
}
private static boolean isLeft(char ch) {
return ch == '(' || ch == '[' || ch == '{';
}
private static boolean valid(char ch) {
return ch == '(' || ch == ')'
|| ch == '[' || ch == ']'
|| ch == '{' || ch == '}';
}
} import java.util.*;
public class Solution {
/**
*
* @param s string字符串
* @return bool布尔型
*/
public boolean IsValidExp (String s) {
// write code here
if(s.length() == 0) {
return true;
}
if(s.length() % 2 != 0) {
return false;
}
Stack<Character> stack = new Stack<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(c == '{') {
stack.push('}');
}else if(c == '[') {
stack.push(']');
}else if(c == '(') {
stack.push(')');
}else {
Character pop = stack.pop();
if(pop != c) {
return false;
}
}
}
return true;
}
}