给定一个字符串 ,只包含左右括号,如果交换一次之后可以使得左右括号匹配则输出Yes,否则输出No 。
输入:
字符串个数
依次输入字符串
直接上代码:
import java.util.Scanner;
/**
* @author hsy
*
*/
public class JingDong3 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();//个数
sc.nextLine();
for(int i=0;i<n;i++){
String str = sc.nextLine();
int len = str.length();
//如果括号字数是奇数,或者是(),则交换一次不可能匹配
if(len%2==1||str=="()"){
System.out.println("No");
}else{
int min = 0;
int count = 0;
for(int j=0;j<len;j++){
if(str.charAt(j)=='(')
count++;
else
count--;
//保存左括号和右括号的差值
if(count<min)
min = count;
}
//左右括号个数不等,则输出No
if(count!=0){
System.out.println("No");
}else{
if(min==0||min==-1)
System.out.println("Yes");
else
System.out.println("No");
}
}
}
}
}