Problem Statement
The set of good strings is defined as follows:
- The string "()" is a good string.
- If S is a good string, each string of the form "(SS...S)" is a good string. That is, if you take any good string, concatenate an arbitrary number of its copies, and then surround the result in parentheses, you will produce another good string.
- Nothing else is a good string.
A subsequence of a string X is any string that can be obtained from X by erasing zero or more of its characters.
You are given a
Let G be the set of all distinct subsequences of s that are good strings. Note that G contains each good subsequence only once, even if it can be produced in multiple ways. For example, for s="(()())" the set G contains the strings "()", "(())", and "(()())".
You are also given an
Definition
- Class:
- RepeatedStrings
- Method:
- findKth
- Parameters:
- String, int
- Returns:
- String
- Method signature:
- String findKth(String s, int k)
- (be sure your method is public)
Constraints
- s will have between 1 and 150 characters, inclusive.
- Each character in s must be '(' or ')'.
- k will be between 1 and 10^9, inclusive.
Examples
"()))((()())"
3
Returns: "(())"
This string has the following distinct good subsequences in sorted order: "((()))", "(()())", "(())", "()". The third one in this list is "(())".
"))))))))))))(((((((((("
1
Returns: ""
This string has no good subsequences.
"(())(()(()))"
1
Returns: "(((())))"
"(())))()((())())"
8
Returns: "()"
"(()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())"
64
Returns: "(((((((((((((()()()())(()()()())))))))))))))"
"("
1000000000
Returns: ""
"))))))()(()))(((())("
2
Returns: "(()())"
"()))))))))))())))))))))())))()))))))))))())))()))))()))))))))()))))())))))()))))))))))"
6
Returns: "(((((((())(())))))))"
"))((()())(()())()))((()))))))))())()))())()(())()(()()())())))()()()(()())))())()))(()((()())())))()))"
391
Returns: "(((((((((((()()()()))((()()()()))((()()()())))))))))))"
")()))))(()))(()(()())()()))(()((())(()))(()(())((((()(()))(())(())(())(())((()))))()()))))(((()())())(()("
1293
Returns: "((((((())))(((())))(((()))))))"
")))))))))))))))))())))))())))(()))))()())))))))))))))))))())))))())))()))))))))))))))))))))()))))())))()))))))))))()))))))("
105
Returns: "(((()())))"
"))())())))))))(()))))))())()()(())))()"
1
Returns: "(((((()())))))"
"))(())(())))))))"
5
Returns: "()"
"))())))))())))))))()))))))))()))))))(()))))))())))()))()))())))("
39
Returns: "((()()))"
")()(((((((()))(((())(()()(())())(((((()((((()"
75
Returns: "()"
")))))(()())(()(()())(())()()))))()()))(()()))))((()))(())))))((((()))()())(()(())()(((("
226
Returns: "((((((((()))((()))((()))((()))))))))"
"))))())())))()))))))))))())())))())()))(())())((()()())))))())()"
58
Returns: "((((()()()()()()()()))))"
"(()()((((((((((((()((((("
2
Returns: "(())"
")()))(()((())))))(())))((())((((()))())(())))(()))))))((()((()(()(())())()))(()()))(()((()(()()(()))()())()(()())()()())())(()())(())(()("
697
Returns: "(((((((((((((((((()())(()()))))))((((((()())(()())))))))))))))))))"
")))))))))))))))))))))))))))())))))))))))))()))))))))))))))))))))))))))))))))))))))"
2
Returns: "()"
"(((((()((()(((())((((((()((())(((((((((((()(()((((((((((((((((((()())((((((()((((((((((((((()((((()(((((((()((((((()(((((((((((((((("
6
Returns: "(((((((((((())(())))))))))))"
"))()((()())(((()((((()))()()((())())))))))))()((())(()))((()))()))())())()((())((()))))))"
603
Returns: "((((((((()()()()()()())(()()()()()()()))))))))"
"()))))))()(()())()()())))))()))(()))(()(((((())))((())(())))(())))(()))))))(()))))))())())))))(()()))()())))))(((("
842
Returns: "(((((((())))))))"
")))))))))))))))))))))))))()))))))))())))()))))))))(()))))())))))))"
7
Returns: "((()()))"
")))()))))((()())(())((()())((((())))))))(()(((()))()()(()()()(()(())()()(((()(())(()())()(()(()()((((((()()((())))(())(()()())))(())("
3074
Returns: "((((((((())))))(((((())))))(((((())))))(((((()))))))))"
"))))))())(()((((((()()))())())))()))()(()()(()))(()()()))()"
29
Returns: "(((((((((()())(()())(()())))))))))"
"()))()))))"
2
Returns: "()"
"))))((())((()))))()))()()(((()())()((()(((((())()())(()))((()))((()()(()((())()))())((()))()((()))(())()))(()"
1028
Returns: "(((((((((()()()))))))))((((((((()()())))))))))"
"))()(((((((()(()))())()()))())()))((()()(()))(())"
186
Returns: "(())"
"))))))))))))))))))))))))))))))))"
1
Returns: ""
")))(())()))())((())(()())))((()))()()(((())((((())(()(((())((((()(()()())))()(())((("
17
Returns: "((((((((((((()()()()()))))))))))))"
"((((()()(()))()(((((((((()()(()((((((((((((()(((((((((()(()((((((((())(())())(()(((()))()(())((((()(((()(("
41
Returns: "((((((((((((((()()))((()()))))))))))))))"
"(((((((("
1
Returns: ""
")()()(())(((()))()))()((((()()()))))))(()))(()))(((())()((()))())))())(()))))(()))(()(()))))(())))((()())))((()()((()(()))(()"
38
Returns: "((((((((((((((((((((((((()()()()()()()))))))))))))))))))))))))"
"))))(()))((())))()((()(()(())(())(()((()(()))))))())((()()))(())))()())(((()(((())))))(())())()())))()))((())("
487
Returns: "(((((((((((((()()())(()()())))))))))))))"
"((((()((((((((((((((((()(()(((((()((((((()((((((((((((()((((()((()(((((((()((((((((((((()((((((((((((((((((((((((((((()()((((((((((((((((()(((((((((("
113
Returns: "((()()()()()()))"
"()(())))(()(((()()()()(()(()))(())))()))(())())(()))()((((((((()((()(())))())(()()(())()())()()"
88
Returns: "(((((((((((((((())(())))(((())(())))))))))))))))"
")))))))))())))))()))))()))))))))))))())())))))())(()()))))))))))))()))))))()))()())))))))))))())))))))))))(()))))))))"
30
Returns: "((((((((()())))(((()()))))))))"
"((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("
1
Returns: ""
")))))()((()))(()()()(())((((()()())((()))))))()((())())()())))))))))(()(()))((()()()(())))((((()(()()())()))((((()(()())()))()"
2152
Returns: "((((((((()()()()()))((()()()()()))((()()()()()))))))))"
"())((((()()(()(())((((((()((()((()((((()((((((((((((((()()))(((()(()(((((((())()()(()()())(((())())(()())(())()(()"
614
Returns: "((((((((((()()))))))))))"
"())))))))))))))))))()))))))))))))))))))))))))))()()))())))))))))))))))))))))))))))))))))))))))))))))))))())())))"
6
Returns: "(((()())))"
"((((()(())(())))))))()(()())(())())()))))))(()(())(()()(())()))()()))((()))((()()()"
964
Returns: "((()()()())(()()()())(()()()()))"
"(()(((())(((()()()(()()()()((((()(((((((((())((((((((())((((((((((((((((((((()()))((()((((((((((((((("
242
Returns: "((()()()()()()()()()()()()))"
")()))))))())(()())())())))(()()))()()(((()(()))))))(((())))()))(((()())()())()))()())(())())))())"
14
Returns: "((((((((((((((((((()())(()()))))))))))))))))))"
"))())((()((()(())(()()()((()))()())"
72
Returns: "(()()())"
")))))))))))))))"
1
Returns: ""
"(((((((()(((((()((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((("
1
Returns: "(())"
"((())())()(((()(())))))))()))))(())()((()((())))()(())())"
200
Returns: "(()()()()()()()()())"
")()())))()))))))()())))(()))()))))())))()))))(()))))))())))())))))))"
22
Returns: "(((((((()()())))))))"
"(()(()())(()())((((()(((((((())))((((()))(()(()((()(((()()((())(())()))()()(()()((((()())"
242
Returns: "((((((((((()()))))))((((((()()))))))))))"
"()))((()())((((()()((()((()))))((((()))()()()())))(())(((())())(())()))(((())))()(((()())())(())((()((()))())(()())((()))()(((()(()))))())((()(()(()()"
3868
Returns: "(((((((((((((()()()())))))))))))(((((((((((()()()())))))))))))))"
"))())())))())))))))))))))))))()))()))))))()))))())))())))())))()))()()))))))()((())))))))))))))))))))))()()))())())))))))))))))))()))))))))))))))())()"
357
Returns: "(((((()()()()()()()()()()()())))))"
"(()()((())(((()((((((((((())(((())()()(((((((((((()(((()((((())(()(((()(()())((((((((()()))))()(((((()(()()(((((((()((((((())((()(((()(((()(()()(())()"
1513
Returns: "(((((((((()())))))(((((()())))))))(((((((()())))))(((((()())))))))))"
"((((()(()()))(()())())())((())())(())()(())))()))((()())))()))()))(()))(()()))))()(())))))()(())))))()(()((()()((()()()))()()((((((((()))(())()()))(()"
2890
Returns: "((((((((((((()()())))(((()()())))(((()()()))))))))))))"
"))())((()))()()((()))()((()))()()())(((()))())((((()()())()()))((()(((()(()(()()(()())())(((()((()()))(((()())(())()(())(((())((())((())(()))((((())))"
2101
Returns: "((((((((((((((()()()())))))(((((()()()()))))))))))))))"
"((()((((((())()))(()))(((())(((()())()()))"
104
Returns: "((()()()()()))"
"()())(()()()((()()((()(((()()()(((()((("
19
Returns: "(((()()))((()())))"
"((((()(((((()()())()(()(()(())(((()(()(()((()((())(((((()(()()(()((()()((((((((((()(()"
162
Returns: "(((((((((())(())(())))))))))"
"())((())())())()((()(()((((((())(()))(()))()((((())))()))(()()()(()((()(((()(((())((())()(((()(()())))()())(()())())((()))((()(((((())()()(()()(((()(("
482933068
Returns: ""
"()))()(((())((()((((((())())(((((()(()()(()(()))()))(())()(()(()(()(()))))(()(())(())))()(()(()()())())()()))(()(((()(((()))()())(())(())(())))(((())("
886536594
Returns: ""
"()()(()()("
3
Returns: "()"
")))))))))))))))))))))))))())()))))))))))))()))()))())))))))))))))))))))))))))))))))))))))))))))))))))()))))))))))))))()))))))(())))))))))))))))))())"
34
Returns: "((())(())(())(()))"
"))(()))))(()((())()(()))((((())()))())))())())(())((()(()))(()))))))))())((())))((((((())))())(((()()(())()))(()(())))()()()"
710
Returns: "((((((((((((()()()()()))((()()()()()))((()()()()()))))))))))))"
"(()()"
2
Returns: "()"
"(((((((((()(((((()(((((((((((((((((((((((())"
7
Returns: "()"
")()))())(()))))())()))())(())((()))))()(()()())(()()(()))()()))())))()(())()(((()()))()))(()()(()(()(((()(()))()()(()))()()((()(((("
3071
Returns: "(((()()()()()()()()()()()()()()()()()()()()()()()()()()()()()())))"
")((())())(()()))())(((((()()))((()()(())(())))()((())))(()())(()((()()))))()()()())()()()))((((((()))))))))()((()())()())(())(()()())(()()((()("
3364
Returns: "((((((((((()))))((((()))))((((()))))))))))"
")()))(())((()(()((())))("
17
Returns: "(())"
"))))))))))))))))))))()())))))))))))))))))))))))))))))))))))))))))())))))))(()))))))))))))()))))))))())))))))))))))))))))))))))())))))"
32
Returns: "()"
")(())()((((((())()()()())(())())))))))(()))))))))()(()()())((())(((())()()))()(((()(((((())((()(())())))()))(())(()))(()()((())))(((())))("
2424
Returns: "((((((((((()()())))(((()()()))))((((()()())))(((()()()))))))))))"
"(((((((((((((((()((((((((()()(((((((((((((((((((((((()()(((()((((((()(((((((((((((((((()((((()(((((((((((((((((())()(())(((((((((((((((((((((((("
63
Returns: "((((((())(())(())(()))))))"
"())()(((((((((()((((())()())(((())())(()(()()))((())(()()((((("
131
Returns: "(((((()()()()()()())))))"
")((()))))()))(()()))))(()()())(((()))())()))(((()(()))()))()))(()()()(((((((()()))((()())))((((()((()())))))))((((())))))((()((()(()(()(()))("
3968
Returns: "()"
"((()((((())))(()()(()()(((()((()))))(((((())()(()(())((()((())()()()))(()))))))()))())())()(()(((()()(()()()()))()(("
2100
Returns: "((((((()()()()()()()()()))))((((()()()()()()()()()))))))"
"))(()(()(()()(())()(((()"
11
Returns: "((()()))"
")()()())()())))(())()()(()(()))))(()()()()(())(())(()(()(())()(()(((())))(()())())()))(()()(())()())()())))((()((()((())(()()())))(())(()(("
5199
Returns: "((((()()()()())(()()()()())(()()()()())(()()()()())(()()()()()))))"
")))))))())((()())(((())())(()))))()((()()))())))))()))((()))))())()(()))()(((()((("
398
Returns: "()"
"())))))())))(((((()(((((())))(()))))())(()))((()))()((()())())))(())(()(())))))))))())(((()))("
1126
Returns: "(()()()()()()()())"
"))(((()()()))))(("
3
Returns: "(((()()())))"
"(((((()(((())(((())()(((((((((()((((("
4
Returns: "((((()))))"
"()))())()))))())"
5
Returns: "()"
")))()((()))(()(())())((())(((()(())((((())(((()())(()(()())()))))(((()))))()())))))((((((())))()(((())((((()))()))))(()()"
1166
Returns: "((((((((((())))))))))(((((((((()))))))))))"
")))))))((()())))((())(()(()((((((())(((())))((()(()))(((()(((())(((()()()())(()())()((((()()()(()()(()())(((()"
106
Returns: "((((((((((((((((()()())(()()()))))))))))))))))"
"((((()(((()(()(((()(()()(((((()((((((((()()(((((((((((()(((((((("
21
Returns: "((((()))((()))))"
"))))))((()()(()((((((()((())())((()()())()((())(()()((()((((())(())()((()()()(()(((((((()(())())())()((("
1624
Returns: "()"
")))))))))))))))))))))))))))))))))))))))))"
1
Returns: ""
")(())(())(()(())(()()()))(()(((())))))(()(())))(((()()(((()))(()))(()((()))()))()()))((()())))))"
865
Returns: "((((((((()())(()())(()())(()())(()())(()()))))))))"
"()(((())(()()()()(())))((())()()((((()((((())(()())(((()((()()())((())))())))(()("
764
Returns: "((((())(())(())(())(()))))"
"(()(((((((((((((((((((((((((((((((((()(((((((()(((((((((("
3
Returns: "()"
"))())))())())((())())))))))(()))))))(()()))()(()())(()))(()(()))((()))()()))))))))()()())))(()()))))(()"
861
Returns: "(((((()())))(((()()))))((((()())))(((()())))))"
"()))((((()())()(((((()(()((())(()))()()(()())()()()))()(())())(()(()(((())))()())()(((()))(()()(((()))((())())())()()())))))()(()(()(()))))((()()()())"
4818
Returns: "(((((((((((((((())))))))(((((((())))))))))))))))"
"(()))()((()((()())())(())()(((((((()))()(()))()))()))))))))()(()((((())(((()()()))))))())(()())()))()(((()((())))(()))))(((()))(()())))(()((()()()))))"
3250
Returns: "(((((((((((()()()()()()()()()()()())))))))))))"
"((())()(((((((((()(()(((((())(()((((())())((((((((()((((()(()(((((())((((()((())(((((((((((((()((()(((((((((((((())(((((())(()((()((()(((((()(((((()))"
1697
Returns: "()"
")(()))(())(((())))(((((()())()(()()((((((())(()))())())(())(())))))())))(((())())(()())))))()((()(((((()()))))()()))())())((()()(((()(()()((()(()))))("
5141
Returns: "(((((((()()()()()()()()()()()()()()()()()())))))))"
"))))))))((()()))))())))())))))()))))(()())()())(()()))())))))))())())(()()()())()()))))())((()))))))))()))))()))))))))())))))())((())()))))))((()))())"
2097
Returns: "(((((()()()()()()))))((((()()()()()())))))"
")))()((()((()))()))()(())((((())()(()()(()))())(()(()(((()()((()))(()()()()))()(()()(()(((()())(((((())()))))()))(()(())()(()()()()((((((()()())))(((("
6569
Returns: "(((()()()()()()))((()()()()()())))"
"()(()())()((()((())(()()()(()())))()())()())(()()(()(()(()()((())))((((())()))())))))))(((((((()))())((((()(()((()(()((())(((()(()()(()()(((()())())()"
6610
Returns: "()"
"))))))))))))))))))))))())))))))))))))))))))))())))()))))))))))))))))))))))))))))))))(())))))))))))))))))))))))())))))))))())))))))))))())))())))))))))"
25
Returns: "(((()()()())))"
"(((()()(()))((((()((()()((()((((())(((((()()((())((()(())())((((())(())))))(()((((())(())(((((((((()(((()(((())()()((((((())()(((((((()))(()(((())(((("
808
Returns: "((((((((((((((()())(()())(()())(()())(()())(()()))))))))))))))"
")((()()((())())())(()(())))()()(()))))(()))()()))()()))())(()()(()()())(((((((()((())()(((((())))()))()))(((((())((())))()(()((()))())()))())()))()())"
7908
Returns: "((()()))"
"))())))))))))))))))))())))())))))))))))))))))))))))))))())))()))()))))))))))))()))))))())))))))()()))))))))))))))))()))())))))))))))())))))))))))())()"
161
Returns: "()"
"))()))()))()))))())))))))))())))()))))))))()()))(()()))))))())))))))))))()))))())))))())))))))))()))))())))))))()))())))))))))))))))))))))))))))())))("
220
Returns: "(((((((())(()))((())(())))))))"
"()((())())))))))((()()))))(((()()(((((()))()(()()))))))(())()()))))()))()()))(()))()(((())(()()()()()((()(()(())(()(())(())())(()(()())()))))()))(()))"
8037
Returns: "((((((()()()()()()()())))(((()()()()()()()()))))))"
"))()))))())(())))(())))()())))))())))))))))))())())()))))())(()))()()()))()))())()))))))()))))()))()())()))))()(())))()))))())))())))))))())))))))))))"
232
Returns: "((((((((((((((((((())(())(()))))))))))))))))))"
"())(()()))(((()())()((()((((()((()()(()(())((((())))()))))(((()(()))()()((()(()()))))(((((((((((()()))(()()())(())())((())(()(()))(())()()())))((((((("
7219
Returns: "()"
"(()))(()())(((()()(()()((())())))()))((((((())))))()())))))(()))((()((((()))()))))(())(()(())())((())()()(())))(())())()()))(()((()))())())()))(()))(("
742
Returns: "(((((((((((((((((((((((())))(((())))(((())))))))))))))))))))))))"
"())())()(()))()())))())()())))(()()))(())()(())()())((()))))((()))))))(())(())()))()(())))()(()(((())))()))(((()((())))(())))))))())((()(())(())()(()("
1547
Returns: "(((((((((((((((())))(((())))(((())))))))))))))))"
")()))((((((()()()))()))())((())()))())()(()(()((((((())(()())((((((())()))()())))))((())()(((()()))))))((((((()))(((((()))()(()(())())(())(((())))((()"
4610
Returns: "(((((()()())(()()()))))((((()()())(()()())))))"
")(()()(()()()(((())()))(()())((()((()()())))(()()()()(()))((()())()))))))()(((())(())(()))(()()))(())()((()()(()()(((()((())()))((()())()())()))(((())"
10867
Returns: "()"
"))())))()))(()())))())))))))))))))()))))())))))))))))))))))())))))())())))))())))))))))())))())))())))())))))))))))))))))(()())))())))()))))))))))))))"
539
Returns: "((((()()))))"