早教吧作业答案频道 -->其他-->
C++最长配对子串给定由(,),[,],{,},构成的一个括号字符串,输出它的一个最长子串,该子串有正确的括号配对。Input输入数据只有一行括号字符串,其长度不大于10000Output输出该括号字符串的最
题目详情
C++最长配对子串
给定由(,),[,],{,},构成的一个括号字符串,输出它的一个最长子串,该子串有正确的括号配对。
Input
输入数据只有一行括号字符串,其长度不大于10000
Output
输出该括号字符串的最长配对子串。若答案不唯一,则输出最左边一个;如果答案不存在,则输出“No Solution”。
Sample Input
[()()]][]
Sample Output
[()()]
给定由(,),[,],{,},构成的一个括号字符串,输出它的一个最长子串,该子串有正确的括号配对。
Input
输入数据只有一行括号字符串,其长度不大于10000
Output
输出该括号字符串的最长配对子串。若答案不唯一,则输出最左边一个;如果答案不存在,则输出“No Solution”。
Sample Input
[()()]][]
Sample Output
[()()]
▼优质解答
答案和解析
bool match(char c, char d)
{
return c=='[' && d==']'
|| c=='(' && d==')'
|| c=='{' && d=='}'
|| c=='';
}
int main()
{
char s[1024];
int mark[1024], i, k = 0, max = 0, low = 0, high = 0;
cin >> s;
for(i=0; s[i]; i++)
{
if(s[i]=='[' || s[i]=='(' || s[i]=='{' || s[i]==' {
mark[k++] = i;
continue;
}
if(k>0 && match(s[mark[k-1]], s[i]))
{
--k;
if(max < i-mark[k])
{
max = i-mark[k];
low = mark[k];
high = i;
}
}
else k = 0;
}
if(high > low)
{
for(i=low; i<=high; i++)
cout << s[i];
}
else cout << "No Solution";
}
{
return c=='[' && d==']'
|| c=='(' && d==')'
|| c=='{' && d=='}'
|| c=='';
}
int main()
{
char s[1024];
int mark[1024], i, k = 0, max = 0, low = 0, high = 0;
cin >> s;
for(i=0; s[i]; i++)
{
if(s[i]=='[' || s[i]=='(' || s[i]=='{' || s[i]==' {
mark[k++] = i;
continue;
}
if(k>0 && match(s[mark[k-1]], s[i]))
{
--k;
if(max < i-mark[k])
{
max = i-mark[k];
low = mark[k];
high = i;
}
}
else k = 0;
}
if(high > low)
{
for(i=low; i<=high; i++)
cout << s[i];
}
else cout << "No Solution";
}
看了C++最长配对子串给定由(,)...的网友还看了以下:
电路中有两盏电灯,将开关合上后,下列说法中正确的是( )A. 若两盏灯同时发光,则两灯一定是串联 2020-05-16 …
在两只电灯的串联电路中,以下说法不正确的是在两只电灯的串联电路中,以下说法中不正确的是()A.通过 2020-05-20 …
如下陈述中正确的是()。A.串“ABC”和串“ABC”不相等B.串的长度必须大于零C.串中元素只能是 2020-05-24 …
灯泡串联的选择题17.用额定电压为220伏的两只灯泡串联,一只为100瓦,另一只为40瓦,串联后加 2020-06-15 …
输入一个字符串,过滤此串,只保留串中的字母字符,并统计新生成串中包含的字母个数/*-------- 2020-06-26 …
如图甲所示,理想变压器的原、副线圈砸数比,L1和L2是相同型号的白炽灯,L1与电容器C串联,L2与 2020-08-01 …
C语言一个题目错误小明最近闲来无事,编写了一段可以用来判断一行包含空格的字符串是否合法的代码,就整天 2020-11-06 …
串的长度是()A.串中不同字母的个数B.串中不同字符的个数C.串中所含字符的个数,且大于串的长度是( 2020-11-07 …
如图所示,关于电路的连接以下说法正确的是()A.只闭合开关S1时,灯L1与L2并联B.只闭合开关S2 2020-11-28 …
如图所示,三只完全相同的灯泡a、b、c分别与电阻R、电感L、电容C串联,再将三者并联,接在“220V 2020-12-20 …