如何在c ++中对以下字符串序列进行排序?

Joh*_*Lui 0 c++ sorting string algorithm

因此,我正在解决一个问题,该问题涉及对由开始和结束括号组成的给定序列的正确字符串进行排序.n括号序列由n "("s和n ")"s组成.

有效的括号序列定义如下:

您可以找到一种方法来重复擦除相邻的括号对,"()"直到它变空.

例如,"(())"是一个有效的括号,你可以在第二和第三个位置擦除它"()",然后你就可以将它变为空. ")()("不是有效的括号.现在,我想知道如何对给定长度的生成的括号序列进行排序,使得具有最大开括号的那些字符串开头,如果两个字符串在开头有相同数量的左括号,那么,在遍历两者时首先打印字符串,以第一个开口括号为准.例如,对于n=3,排序的序列将是,

((()))  // 3 opening in a row and hence first

(()()) // 2 opening (same as the one which is below this one) but has a opening bracket first

(())()

()(())

()()()
Run Code Online (Sandbox Code Playgroud)

Kar*_*ath 5

您可以使用标准排序算法std :: sort

默认(词典编纂)排序将完全符合您的要求.