【发布时间】:2019-01-28 15:25:31
【问题描述】:
这是我最近遇到的问题。
给定 n 对括号,编写一个函数来生成格式正确的括号的所有组合。
例如,给定 n = 3,解集是:
"((()))", "(()())", "(())()", "()(())", "()()()"
这是我的代码:
- (void)generateParentheses:(int)n{
for (int i = 1; i <= n; i++) {
[self generateParentheses:@"" open:0 close:0 pairs:i];
}
}
- (void)generateParentheses:(NSString *)output open:(int)open close:(int)close pairs:(int)pairs{
if ((open == pairs) && (close == pairs)) {
NSLog(@"%@",output);
}
else {
if (open < pairs) {
output = [output stringByAppendingString:@"("];
[self generateParentheses:output open:open+1 close:close pairs:pairs];
}
if (close < open) {
output = [output stringByAppendingString:@")"];
[self generateParentheses:output open:open close:close+1 pairs:pairs];
}
}
}
这是n = 2时的结果
()
(())
(()()
当 n = 3 时,会有很多非格式良好的括号。 使用debug的时候,发现open=1,close=0的时候,输出是@"(("。很惊讶,不知道为什么。为什么不是@"("?
【问题讨论】:
标签: ios objective-c algorithm