java小编程----括号是否匹配
程序员文章站
2024-02-28 19:33:28
...
错误示例::: 当
String s = "...(...[....]....{...}...)...(.[..).."; 应输出3
package com.henu.jihe;
/*
* String s = "...(...[....]....{...}...)...(...).."; 判断括号是否匹配
* 思路:遍历整个String;然后从i=0截取strFirst=s.subString(i,i+1),
*然后在截取strEnd = s.substring(i+1);先判断strFirst是否为左括号,若是则判断在
*strEnd中是否包含右括号,若包含则count++;
*/
public class Demo06 {
public static void main(String[] args) {
String s = "...(...[....]....{...}...)...(...)..";
int count = 0;//匹配括号的数目
for (int i = 0; i < s.length(); i++) {
String strFirst = s.substring(i,i+1);
String strEnd = s.substring(i+1);
if (strFirst.equals("(") && strEnd.contains(")")) {
count++;
}else if (strFirst.equals("[") && strEnd.contains("]")) {
count++;
}else if (strFirst.equals("{") && strEnd.contains("}")) {
count++;
}else {
continue;
}
}
System.out.println(count);
}
}
再一个错误示例
package com.henu.jihe;
import java.util.Arrays;
import java.util.Stack;
import java.util.Vector;
/*
* String s = "...(...[....]....{...}...)...(...).."; 判断括号是否匹配
* 思路:遍历整个String;然后从i=0截取strFirst=s.subString(i,i+1),
*然后在截取strEnd = s.substring(i+1);先判断strFirst是否为左括号,若是则判断在
*strEnd中是否包含右括号,若包含则count++;
*/
public class Demo06_02 {
public static void main(String[] args) {
String s = "...(...[....]....{...}...)...(...)..";
String[] str = s.split("\\.+");
System.out.println(Arrays.toString(str));
Stack<String> stack = new Stack<>();
int count = 0;
for (int i = 0; i < str.length; i++) {
if ("(".equals(str[i])) {
stack.push(str[i]);
if (")".equals(str[i+1])) {
stack.pop();
count++;
}
}else if ("[".equals(str[i])) {
stack.push(str[i]);
if ("]".equals(str[i+1])) {
stack.pop();
count++;
}
}else if ("{".equals(str[i])) {
stack.push(str[i]);
if ("}".equals(str[i+1])) {
stack.pop();
count++;
}
}else {
continue;
}
}
System.out.println(count);
}
}
再来个错误示例:::
package com.henu.jihe;
import java.util.Arrays;
import java.util.Stack;
public class Demo06_03 {
public static void main(String[] args) {
String s = "...(...[....]....{...}...)...(...)..";
String[] str = s.split("\\.+");
System.out.println(Arrays.toString(str));
Stack<String> stack = new Stack<>();
int count = 0;
String string = "";
for (int i = 0; i+1 < str.length; i++) {
if ("(".equals(str[i]) || "[".equals(str[i]) || "{".equals(str[i])) {
stack.push(str[i]);
string = stack.peek();
}
// if (stack.size() != 0) {
// string = stack.peek();
//// System.out.println(string);
// }
if ("(".equals(string) && ")".equals(str[i+1])) {
stack.pop();
count++;
}else if ("[".equals(string) && "]".equals(str[i+1])) {
stack.pop();
count++;
}else if ("{".equals(string) && "}".equals(str[i+1])) {
stack.pop();
count++;
}else {
continue;
}
}
System.out.println(count);
}
}
重头戏:正确的::::
package com.henu.jihe;
import java.util.Arrays;
import java.util.Stack;
public class Demo06_03 {
public static void main(String[] args) {
String s = "...(...[....]....{...}...)...(...)..";
String[] str = s.split("\\.+");
System.out.println(Arrays.toString(str));
Stack<String> stack = new Stack<>();
int count = 0;
String string = "";
for (int i = 0; i+1 < str.length; i++) {
if ("(".equals(str[i]) || "[".equals(str[i]) || "{".equals(str[i])) {
stack.push(str[i]);
string = stack.peek();
}
// if (stack.size() != 0) {
// string = stack.peek();
//// System.out.println(string);
// }
if ("(".equals(string) && ")".equals(str[i+1])) {
stack.pop();
count++;
}else if ("[".equals(string) && "]".equals(str[i+1])) {
stack.pop();
count++;
}else if ("{".equals(string) && "}".equals(str[i+1])) {
stack.pop();
count++;
}else {
continue;
}
}
System.out.println(count);
}
}
上一篇: jQuery判断checkbox是否选中的3种方法
下一篇: 判断一个数是否为素数
推荐阅读
-
java小编程----括号是否匹配
-
JAVA中使用双括号来初始化静态常量的小技巧
-
JAVA正则表达式匹配括号 博客分类: JAVA 正则表达式匹配括号
-
Java多线程编程小实例模拟停车场系统
-
Java编程小实例—数字时钟的实现代码示例
-
PHP判断表达式中括号是否匹配的简单实例_php实例
-
Java编程通过匹配合并数据实例解析(数据预处理)
-
Java编程通过匹配合并数据实例解析(数据预处理)
-
1.java小作业-计算1到100的整合-指定输入多少行输出就打印多少行-打印24小时60分钟每一分钟-重载基础练习-面向java编程初学者
-
Longest Valid Parentheses leetcode java (求最长有效匹配括号子串的长度)-动态规划