[保研/考研机试] 括号匹配问题 C++实现

这篇具有很好参考价值的文章主要介绍了[保研/考研机试] 括号匹配问题 C++实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目描述:

在某个字符串(长度不超过100)中有左括号、右括号和大小写字母;规定(与常见的算数式子一样)任何一个左括号都从内到外与在它右边且距离最近的右括号匹配。写一个程序,找到无法匹配的左括号和右括号,输出原来的字符串,并在下一行标出不能匹配的括号。不能匹配的左括号用"$"标注,不能匹配的右括号用"?"标注。

 输入描述:

输入包括多组数据,每组数据一行,包含一个字符串,只包含左右括号和大小写字母,字符串

长度不超过100。

输出描述:

对每组输出数据,输出两行,第一行包含原始输入字符,第二行由"$"、"?"和空格组成,"$"和"?"表示与之对应的左括号和右括号不能匹配。

源代码:

#include<iostream>
#include<stack>
using namespace std;


//例题5.5 括号匹配问题
int main()
{
	string s;
	cin >> s; // )(rttyy())sss)(
	stack<char> myStack;
	stack<int> myNums;
	for (int i = 0; i < s.size(); i++) {
		if (s[i] == '(') {
			myStack.push(s[i]);
			myNums.push(i);
		}
		if (s[i] == ')') {
			if (!myStack.empty() && myStack.top() == '(') {
				myStack.pop();
				myNums.pop();
			}
			else {
				myStack.push(s[i]);
				myNums.push(i);
			}
		}
	}
	string ss = "a";
	for (int i = 0; i < s.size(); i++) {
		ss += ' ';
	}

	while(!myNums.empty()) {
		if (s[myNums.top()] == '(') {
			ss[myNums.top()] = '$';
			myNums.pop();
		}
		if (s[myNums.top()] == ')') {
			ss[myNums.top()] = '?';
			myNums.pop();
		}
	}

	cout << s << endl;
	cout << ss << endl;

	return 0;
}

运行结果;

[保研/考研机试] 括号匹配问题 C++实现,机试刷题记录,考研,c++,算法,考研机试,数据结构

 文章来源地址https://www.toymoban.com/news/detail-638977.html

到了这里,关于[保研/考研机试] 括号匹配问题 C++实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [保研/考研机试] KY56 数制转换 北京大学复试上机题 C++实现

    数制转换 https://www.nowcoder.com/share/jump/437195121691734210665 求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。 不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。 输入描述: 输入只有一行,包含三个

    2024年02月13日
    浏览(52)
  • [保研/考研机试] KY87 鸡兔同笼 北京大学复试上机题 C++实现

    一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。 每组测试数据占1行,每行一个正整数a (a 32768) 输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数

    2024年02月13日
    浏览(42)
  • [保研/考研机试] KY235 进制转换2 清华大学复试上机题 C++实现

    KY235 进制转换2 https://www.nowcoder.com/questionTerminal/ae4b3c4a968745618d65b866002bbd32 将M进制的数X转换为N进制的数输出。 输入的第一行包括两个整数:M和N(2=M,N=36)。 下面的一行输入一个数X,X是M进制的数,现在要求你将M进制的数X转换成N进制的数输出。 输出X的N进制表示的数。 将M进制

    2024年02月13日
    浏览(49)
  • [保研/考研机试] KY180 堆栈的使用 吉林大学复试上机题 C++实现

    堆栈的使用_牛客题霸_牛客网     堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。其中 push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。 输入描述:     对于每组测试数据,第一行是一个正整数 n(0 n = 1

    2024年02月13日
    浏览(108)
  • [保研/考研机试] KY11 二叉树遍历 清华大学复试上机题 C++实现

    二叉树遍历_牛客题霸_牛客网 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。题目来自【牛客题霸】 https://www.nowcoder.com/share/jump/437195121692547007478 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一

    2024年02月11日
    浏览(41)
  • [保研/考研机试] KY3 约数的个数 清华大学复试上机题 C++实现

    KY3 约数的个数 https://www.nowcoder.com/share/jump/437195121691716950188 输入n个整数,依次输出每个数的约数的个数 输入的第一行为N,即数组的个数(N=1000) 接下来的1行包括N个整数,其中每个数的范围为(1=Num=1000000000) 可能有多组输入数据,对于每组输入数据, 输出N行,其中每一行对应上

    2024年02月13日
    浏览(51)
  • [保研/考研机试] KY129 简单计算器 浙江大学复试上机题 C++实现

        读入一个只包含 +, -, *, / 的非负整数计算表达式,计算该表达式的值。 输入描述:     测试输入包含若干测试用例,每个测试用例占一行,每行不超过200个字符,整数和运算符之间用一个空格分隔。没有非法表达式。当一行中只有0时输入结束,相应的结果不要输出。

    2024年02月13日
    浏览(43)
  • [保研/考研机试] KY110 Prime Number 上海交通大学复试上机题 C++实现

    Prime Number https://www.nowcoder.com/share/jump/437195121691717713466 Output the k-th prime number. 输入描述: k≤10000 输出描述: The k-th prime number. 输入: 输出:

    2024年02月13日
    浏览(37)
  • [保研/考研机试] KY102 计算表达式 上海交通大学复试上机题 C++实现

    对于一个不存在括号的表达式进行计算 输入描述: 存在多组数据,每组数据一行,表达式不存在空格 输出描述: 输出结果 ①设立运算符和运算数两个栈,,一个用来存储运算符,另一个用来存储运算数。 ②在运算符栈中放置一个特殊运算符#,其优先级最低。 ③将表达式尾部

    2024年02月13日
    浏览(89)
  • [保研/考研机试] KY187 二进制数 北京邮电大学复试上机题 C++实现

    大家都知道,数据在计算机里中存储是以二进制的形式存储的。 有一天,小明学了C语言之后,他想知道一个类型为unsigned int 类型的数字,存储在计算机中的二进制串是什么样子的。 你能帮帮小明吗?并且,小明不想要二进制串中前面的没有意义的0串,即要去掉前导0。 输入

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包