编写一个名为validBraces
的函数,该函数采用一串花括号,并确定花括号的顺序是否有效。如果字符串有效,validBraces应该返回true,如果无效则返回false。
所有输入字符串将为非空,并且仅由开括号(
,闭括号)
,开括号[
,闭括号]
,大括号组成{
和大括号}
。
什么才是有效的?
如果所有括号都与正确的括号匹配,则一串括号被视为有效。例如:
(){}[]
和([{}])
被认为是有效的,而(}
,[(])
和[({})](]
被认为是无效的。
Specification
validBraces(braces)
检查大括号顺序是否有效
参数
花括号:String-花括号顺序的字符串表示形式
返回值
布尔值-如果括号的顺序有效,则返回true
示例:
Input Output
validBraces( "(){}[]" ) true
validBraces( "(}" ) false
validBraces( "[(])" ) false
validBraces( "([{}])" ) true
答案 0 :(得分:0)
这是非常琐碎的分配,您可以使用堆栈(即数组/列表)。然后,您逐字符遍历输入字符串char,一旦检测到开括号((
,<
,{
等),便将该括号压入堆栈(或追加到数组中),没关系)。并且当遇到右括号()
,>
,}
等)时,会从堆栈中弹出最后一个元素。然后,您检查方括号类型是否匹配,因此当您拥有>
时,应该从堆栈中弹出<
,否则您将停止抱怨方括号不匹配(或其他原因)的过程。一旦完成迭代而没有任何错误,您的堆栈应该为空。如果需要知道是否处理过任何括号,可以使用计数器/标志。
答案 1 :(得分:-1)
创建一个变量,该变量以“(”的数量递增,然后从该数字递减 -= 对于每个“)”,如果该变量为 = 0,则括号是平衡的。对不同类型的括号重复相同的操作。