【发布时间】:2016-02-17 09:22:51
【问题描述】:
在一次采访中,我被要求解决以下问题。
给定一个字符串,计算其中括号对的数量。例如,如果字符串是s = "()()",则有3对:
s[0], s[1]
s[0], s[3]
s[2], s[3]
我写了以下代码:
int count(char* s) {
int left = 0;
int pair = 0;
for (int i = 0; i < strlen(s); i++) {
char c = s[i];
if (c == '(') {
left++;
} else if (c == ')') {
pair += left;
}
}
return pair;
}
然后又出现了一个问题:
给定长度 L 和计数 N,用 strlen(s) == L 和 count(s) == N 确定字符串 s(count 是我上面写的函数;s 应该只包含括号)。例如,如果 L 为 4,N 为 3,则字符串为“()()”。
我发现,在示例中,s 也可以是“((()”或“()))”。最好把符合要求的字符串全部打印出来。
谁能解决第二个问题?谢谢你。如果你写java或者c/c++代码来解决就好了。
【问题讨论】:
-
你知道滑动窗口技术吗?
-
是的。可以在这里使用吗?你能解释一下吗?
-
很好,请稍等。
-
您是否正在尝试查找长度正确且计数正确的字符串?还是该长度的字符串数量正确?
-
嗯,对不起,我误解了这个问题:(