当前位置: 首页 > article >正文

VSC++: 括号对称比较

括号的使用规则:大括号,中括号,小括号{[()]};中括号,小括号[()];小括号();大括号、中括号、小括号、中括号、小括号、大括号{[()][()]};大括号,中括号,小括号,小括号{[(())]};大括号,中括号,小括号,小括号{[()()]};小括号不能嵌套,小括号可连续使用。
{[]}、{()}、([])、({})、[{}]、{}、[]、{[}]、[(])都属非法。

	char aa[]{"[]{}()"}, aaa[47]{}; cin >> aaa;//缘由https://bbs.csdn.net/topics/396213711
	int a[6]{0}, j = 0, jj = 0, z = sizeof(aaa) / sizeof(aaa[0]);
	while (j < z && aaa[j] != '\0')if (jj < 6)if (aaa[j] == aa[jj])++a[jj++]; else ++jj; else jj = 0, ++j;
	cout << (a[0] == a[1] && a[2] == a[3] && a[4] == a[5]) << endl;
使用数组设计了2种逻辑,小学算术先小括号始中括号大括号,未使用小括号就使用中大括号为非法,大学逻辑或编程逻辑只检查顺序对称不分括号类型,代码留着到适合应用场景时用,免日后再写.检查数量对称,优先级顺序,左右对称如下:
void 小学括号对称()
{//缘由https://bbs.csdn.net/topics/396213711
	char aa[]{"{}[]()"}, aaa[47]{}; cin >> aaa;
	int j = 0, jj[3]{0}, jc = 0;
	bool k = true;
	while (aaa[j] != '\0')
	{
		if (aaa[j] == aa[0])jc = jj[0] += 1;
		else if (aaa[j] == aa[2])jc = jj[1] += 1;
		else if (aaa[j] == aa[4])jc = jj[2] += 1;//+嵌套限制
		else if (aaa[j] == aa[1])k = (jc == 1), (jj[1] && k ? jc = jj[1]/*, jj[0] = 0 : 0*/ : 0);
		else if (aaa[j] == aa[3])k = (jc == 1), (jj[2] && k ? jc = jj[0], (jj[0] ? 0 : jc = jj[2])/*, jj[1] = 0*/ : 0);
		else if (aaa[j] == aa[5])k = (jc == 1), (k ? jc = jj[1], (jj[1] ? 0 : jc = jj[0])/*, jj[2] = 0*/ : 0);
		if (k)++j; else break;
	}
	cout << k << endl;
}
void 大学括号对称()
{//缘由https://bbs.csdn.net/topics/396213711
	char aa[]{"{}[]()"}, zj[447]{}, aaa[447]{}; cin >> aaa;
	int j = 0, jj = 0;
	bool k = true;
	while (aaa[j] != '\0')
	{
		if (aaa[j] == aa[0])zj[jj++] = aa[1];
		else if (aaa[j] == aa[2])zj[jj++] = aa[3];
		else if (aaa[j] == aa[4])zj[jj++] = aa[5];
		else if (aaa[j] == zj[jj - 1])zj[--jj] = 0;
		else k = false;
		if (k)++j; else break;
	}
	if (zj[0] != '\0')k = false;
	cout << k << endl;
}
void 括号对称比较()
{//缘由https://bbs.csdn.net/topics/396213711
	char aa[]{"{}[]()"}, aaa[47]{}; cin >> aaa;
	int j = 0, jj[3]{0}, jc = 0;
	bool k = true;
	while (aaa[j] != '\0')
	{
		if (aaa[j] == aa[0])jc = jj[0] += 4;
		else if (aaa[j] == aa[2])jc = jj[1] += 7;
		else if (aaa[j] == aa[4])jc = jj[2] += 9;//+嵌套限制
		else if (aaa[j] == aa[1])
			k = (jc == 1), (k ? jc = jj[0] -= 1 : 0);
		else if (aaa[j] == aa[3])
			k = (jc == 3), (k ? jc = jj[1] -= 3, jc ? 0 : jc = jj[0] : 0);
		else if (aaa[j] == aa[5])
			k = (jc == 5), (k ? jc = jj[2] -= 5, jc ? 0 : jj[1] ? jc = jj[1] : jc = jj[0] : 0);
		if (k)++j; else break;
	}
	cout << k << endl;
}


http://www.kler.cn/a/293623.html

相关文章:

  • Axure设计之文本编辑器制作教程
  • 蓝桥杯每日真题 - 第7天
  • IPguard与Ping32全面对比——选择最适合企业的数据安全解决方案
  • nginx部署H5端程序与PC端进行区分及代理多个项目及H5内页面刷新出现404问题。
  • 翼鸥教育:从OceanBase V3.1.4 到 V4.2.1,8套核心集群升级实践
  • 初探鸿蒙:从概念到实践
  • 使用Cskin时候 遇到按钮有默认阴影问题解决
  • Java语法全解析:掌握基本规则,打造稳固编程基础!
  • 企业级Ansible自动化运维项目案例:实战与技巧
  • 集成 Logrus 到 Gin:打造高效的 Go Web 日志系统
  • 【python因果推断库10】工具变量回归与使用 pymc 验证工具变量3
  • 音频基础学习四——声音的能量与分贝
  • 探索Mem0:下一代人工智能与机器学习内存管理基础设施(二)Mem0+Ollama 部署运行
  • .net中的内存管理和垃圾回收
  • CSS学习14[重点]--定位、边偏移、定位模式
  • linux-性能优化命令
  • Css:属性选择器、关系选择器及伪元素
  • 【项目二】C++高性能服务器开发——日志系统(日志器,日志级别,日志事件)
  • 2024高教杯数学建模B题思路
  • shell编程--正则表达式
  • SAP ABAP 程序迁移工具 SAPLINK ABAP GIT
  • Oracle 19c数据库:Windows详细安装与配置指南
  • 【操作系统】进程同步之共享内存
  • [dp]答疑
  • 0.ffmpeg面向对象oopc
  • 进程间通信与管道