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

若有一个包括 '(' 和 ')' 的字符串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;
}
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 15天前 0

暂无评论

推荐阅读
OWcqk49iaHJv