首页 > 其他分享 >一道关于顺序栈的笔试题:判断一个包含'('和')'的字符串是否有效

一道关于顺序栈的笔试题:判断一个包含'('和')'的字符串是否有效

时间:2024-04-26 20:55:06浏览次数:15  
标签:Pstr SeqStack return 笔试 括号 Manager 顺序 字符串

若有一个包括 '(' 和 ')' 的字符串string ,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件:
A.左括号必须用相同类型的右括号闭合。
B.左括号必须以正确的顺序闭合。
C.每个右括号都有一个对应的相同类型的左括号。

思路图:

image

参考代码:

bool SeqStack_IsStringVaild(SeqStack_t *Manager, const char *Str)
{
	char *Pstr = Str; // 备份地址,防止地址丢失

	// 1.循环遍历字符串,寻找'('
	while (*Pstr)
	{
		// 判断当前地址下的字符是否为'(',如果是则入栈
		if (*Pstr == '(')
		{
			SeqStack_Push(Manager, '(');
		}
		if (*Pstr == ')')
		{
			// 判断空栈
			if (SeqStack_IsEmpty(Manager))
			{
				return false;
			}
			SeqStack_Pop(Manager);
		}
		Pstr++;
	}
	// 2.判断栈是否为空
	if (!SeqStack_IsEmpty(Manager))
	{
		return false;
	}
	return true;
}

标签:Pstr,SeqStack,return,笔试,括号,Manager,顺序,字符串
From: https://www.cnblogs.com/beborn00/p/18160869

相关文章

  • 字符串里找数字
    #include<iostream>#include<string>#include<cctype>intmain(){std::stringinput;std::cout<<"请输入一个字符串:";std::getline(std::cin,input);//读取一行输入std::stringnumber;//用来存储找到的数字std::cou......
  • 顺序栈
    /***********************************************************************************************************该程序实现顺序栈元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以顺序栈中元素的*数据类型为DataType_t,用户可以根据实际情况修改顺序......
  • 顺序循环队列的接口设计
    /***********************************************************************************************************该程序实现循环队列元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以循环队列中元素*的数据类型为DataType_t,用户可以根据实际情况......
  • 如何在 C# 中使用 String.Split 分隔字符串
    一直以为split是用来分隔字符的,没想到还可以分隔数组。让程序变得更简单。微软官网的介绍在此记录下。https://learn.microsoft.com/zh-cn/dotnet/csharp/how-to/parse-strings-using-split 1、分单个字符stringphrase="Thequickbrownfoxjumpsoverthelazydog.";......
  • Android保存字符串到本地储存卡中saveLocal
    publicclassSaveLocal{//保存文件到sd卡publicstaticvoidsaveToFile(Stringcontent){BufferedWriterout=null;//获取SD卡状态Stringstate=Environment.getExternalStorageState();//判断SD卡是否就绪if(......
  • 找到字符串中所有字母异位词
    Problem:438.找到字符串中所有字母异位词目录思路Code给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。示例1:输入:s="cbaebabacd",p="abc"输出:......
  • 练习题----顺序栈算法
    题目:​ 输入一个包括'('和')'的字符串string,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件:A.左括号必须用相同类型的右括号闭合。B.左括号必须以正确的顺序闭合。C.每个右括号都有一个对应的相同类型的左括号。题目分析:​ 该......
  • C语言数据结构:顺序栈的创建、出入栈,以及使用顺序栈实现十进制转十六进制
    /***********************************************************************************************************该程序实现顺序栈元素的增删改查,目的是提高设计程序的逻辑思维,另外为了提高可移植性,所以顺序栈中元素的*数据类型为DataType_t,用户可以根据实际情况修改......
  • 使用顺序栈设计一个把十进制数转换为十六进制数的接口
    数据结构使用顺序栈设计一个把十进制数转换为十六进制数的接口笔试题:设计一个进制转换程序,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。/****************************************************......
  • 自定义顺序栈-完成十进制转十六进制
    十进制转十六进制输出/********************************************************************* 文件名称: 十进制转十六进制输出* 文件作者:[email protected]* 创建日期:2024/04/25* 文件功能:对双向链表的增删改查功能的定义* 注意事项:None*......