Java学习手册:(数据结构与算法)如何消除嵌套的括号?

博客围绕给定格式字符串,如(1,(2,3),(4,(5,6),7)),提出用Java实现消除嵌套括号的算法。该算法包含判断表达式是否正确和消除嵌套括号两个功能,给出代码并展示了正确和错误表达式的输出结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述:给定一个如下格式的字符串(1,(2,3),(4,(5,6),7)),括号内的元素可以是数字,也可以是另一个括号,实现一个算法以消除嵌套的括号,例如把上面的表达式变成(1,2,3,4,5,6,7),若表达式有错误,则报错。

算法思想:问题包含两个功能①判断表达式是否正确②消除表达式中嵌套的括号。

代码如下:

package com.haobi;
/*
 * 如何消除嵌套括号?
 */
public class Test1 {
	public static String Delete(String s) {
		String result = "("; 
		char[] c = s.toCharArray();
		int count = 0;//计数器
		//循环遍历字符数字
		for(int i=0;i<c.length;i++) {
			//如果遇到(左括号则计数器加1
			if(c[i]=='(') {
				count++;
			}
			//如果遇到)右括号则计数器减1
			if(c[i]==')') {
				if(count>0) {
					count--;
				}else {
					System.out.println("表达式有错误!");
					return null;
				}
			}
			//如果遇到,逗号则将其添加到result中,i++,continue停止当此循环
			if(c[i]==',') {
				result += c[i];
			}
			//如果遇到0-9的数字则将其添加到result中
			if(c[i]>='0'&&c[i]<='9') {
				result += c[i];
			}
		}
		//统计括号匹配的数目
		if(count>0) {
			System.out.println("表达式有错误!");
			return null;
		}
		result += ")";
		return result;
	}
	public static void main(String[] args) {
		String s1 = "(1,(2,3),(4,(5,6),7))";
		String result1 = Delete(s1);
		if(result1 != null) {			
			System.out.println(result1);
		}
		String s2 = "(1,(2),3),(4,(5,6),7))";
		String result2 = Delete(s2);
		if(result2 != null) {			
			System.out.println(result2);
		}
	}
}

程序输出结果如下:

(1,2,3,4,5,6,7)
表达式有错误!
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值