题目描述 给定只由 6 种括号字符组成的字符串:(, ), [, ], {, }。判断每个字符串是否为“合法括号序列”, 合法则输出 YES,否则输出 NO。合法括号序列的定义: 空串合法; 若 A 合法,则 (A), [A], {A} 均合法; 若 A 与 B 均合法,则 AB 合法。 输入格式 第一行一个整数 T,表示数据组数。接下来 T 行,每行一个只包含上述 6 种字符的字符串。 输出格式 对于每个字符串,输出一行: 若其为合法括号序列,输出 YES; 否则输出 NO。 输入输出样例 输入 1 ()[]{} 输出 YES 输入 6 () ([)] ([]){} (((( {[()()]} }{ 输出 YES NO YES NO YES NO 说明/提示 记单串长度记为 ∣S∣。测试数据满足 1≤∣S∣≤106,1≤T≤2×105,同一输入文件内总长度 ∑∣S∣≤2×106,字符串只包含字符 ()[]{}。 用c++语言
```cpp #include <iostream> #include <stack> #include <string> // 判断字符串是否为合法括号序列 bool isValid(const std::string& s) { std::stack<char> st; for (char c : s) { if (c == '(' || c == '[' || c == '{') { st.push(c); } else { if (st.empty()) return false; char top = st.top(); st.pop(); if ((c == ')' && top != '(') || (c == ']' && top != '[') || (c == '}' && top != '{')) { return false; } } } return st.empty(); } int main() { int T; std::cin >> T; std::cin.ignore(); // 忽略换行符 for (int i = 0; i < T; ++i) { std::string s; std::getline(std::cin, s); if (isValid(s)) { std::cout << "YES" << std::endl; } else { std::cout << "NO" << std::endl; } } return 0; } ``` 代码解释 1. `isValid`函数:该函数用于判断输入的字符串是否为合法括号序列。 - 使用`std::stack`来存储左括号。 - 遍历字符串中的每个字符,如果是左括号,则将其压入栈中。 - 如果是右括号,检查栈是否为空。若为空,说明没有匹配的左括号,返回`false`。 - 若栈不为空,弹出栈顶元素,检查是否与当前右括号匹配。若不匹配,返回`false`。 - 遍历结束后,若栈为空,说明所有左括号都有匹配的右括号,返回`true`;否则返回`false`。 2. `main`函数: - 读取输入的测试数据组数`T`。 - 使用`std::cin.ignore()`忽略换行符。 - 循环`T`次,每次读取一个字符串,并调用`isValid`函数判断其是否合法。 - 根据判断结果输出`YES`或`NO`。 [2025-12-04 18:04:18 | AI问答 | 532点数解答]
- [字节豆包] 题目描述 给定只由 6 种括号字符组成的字符串:(, ), [, ], {, }。判断每个字符串是否为“合法括号序列”, 合法则输出 YES,否则输出 NO。合法括号序列的定义: 空串合法; 若 A 合法,则 (A), [A], {A} 均合法; 若 A 与 B 均合法,则 AB 合法。 输入格式 第一行一个整数 T,表示数据组数。接下来 T 行,每行一个只包含上述 6 种字符的字符串。 输出格式 对于每个字符串,输出一行: 若其为合法括号序列,输出 YES; 否则输出 NO。 输入输出样例 输入 1 ()[]{} 输出 YES 输入 6 () ([)] ([]){} (((( {[()()]} }{ 输出 YES NO YES NO YES NO 说明/提示 记单串长度记为 ∣S∣。测试数据满足 1≤∣S∣≤106,1≤T≤2×105,同一输入文件内总长度 ∑∣S∣≤2×106,字符串只包含字符 ()[]{}。 用c++语言(339点数解答 | 2025-12-03 18:22:21)54
- [字节豆包] 题目描述 给定只由 6 种括号字符组成的字符串:(, ), [, ], {, }。判断每个字符串是否为“合法括号序列”, 合法则输出 YES,否则输出 NO。合法括号序列的定义: 空串合法; 若 A 合法,则 (A), [A], {A} 均合法; 若 A 与 B 均合法,则 AB 合法。 输入格式 第一行一个整数 T,表示数据组数。接下来 T 行,每行一个只包含上述 6 种字符的字符串。 输出格式 对于每个字符串,输出一行: 若其为合法括号序列,输出 YES; 否则输出 NO。 输入输出样例 输入 1 ()[]{} 输出 YES 输入 6 () ([)] ([]){} (((( {[()()]} }{ 输出 YES NO YES NO YES NO 说明/提示 记单串长度记为 ∣S∣。测试数据满足 1≤∣S∣≤106,1≤T≤2×105,同一输入文件内总长度 ∑∣S∣≤2×106,字符串只包含字符 ()[]{}。 用c++语言(532点数解答 | 2025-12-04 18:04:18)48
- [字节豆包] 题目描述 在计算机科学中,二进制数是一种仅由 0 和 1 组成的数制。现在给你一个整数 n,你需要判断 n 是否符合二进制数的特征,即它是否仅由数字 0 和 1 组成。 若 n 仅由 0 和 1 组成,就意味着它可以被看作是一个二进制数,此时请输出 yes;若 n 包含除 0 和 1 之外的其他数字,那么它不符合二进制数的定义,此时请输出 no。 输入格式 一行,包含一个整数 n。 输出格式 一行一个字符串,若 n 仅由 0 和 1 组成,输出 yes;否则,输出 no。(473点数解答 | 2025-11-15 20:34:57)62
- [字节豆包] 题目描述 现在给出一排共 n 只鹅的身高,李白想知道最高的鹅比其他所有鹅高多少、最矮的鹅 比其他所有鹅矮多少。 请输出这两行信息。 输入格式 输入共两行。 第一行一个整数 n 表示鹅的数目。 第二行共 n 个整数 ai(i=1,2,3...n),表示第 i 只鹅的身高。 输出格式 输出共两行。 第一行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最高的那只鹅要 矮多少。 第二行共 n 个空格隔开的整数,第 i 个整数表示序列中第 i 只鹅比最矮的那只鹅要 高多少。 输入输出样例 输入 #1 6 4 7 8 6 3 2 输出 #1 4 1 0 2 5 6 2 5 6 4 1 0 说明/提示 李白一共有 6 只鹅,最高的一只身高为 8,最矮的一只身高为 2,然后分别作为被减 数和减数参与身高差计算可得结果。 对于 30% 数据,保证 0≤ai≤30,1≤n≤20。 对于 100% 数据,保证 0≤ai≤1018,1≤n≤106。 用c++语言(549点数解答 | 2025-11-16 20:19:06)52
- [字节豆包] 你要开始一场数轴旅行,初始时,你所在的位置为 � = 0 x=0 ,你想要去 � = � x=d 位置。 给定 � n 个整数 � 1 , � 2 , . . . , � � a 1 ,a 2 ,...,a n ,表示每次你可以往左移动 � � a i 个单位或往右移动 � � a i 个单位。 请问,最终能否到达 � = � x=d 位置?能则输出 Yes,不能输出 No。 输入 输入共两行: 第一行,两个整数 n,d 第二行,n 个正整数 输出 输出能否达到最终目标位置。 样例输入 复制 2 -4 6 8 样例输出 复制 Yes 提示 对于 30 % 30% 的数据,满足 1 ≤ � ≤ 10 1≤n≤10, 1 ≤ � � ≤ 10 1≤a i ≤10, − 20 ≤ � ≤ 20 −20≤d≤20。 对于 60 % 60% 的数据,满足 1 ≤ � ≤ 1 0 3 1≤n≤10 3 , 1 ≤ � � ≤ 1 0 3 1≤a i ≤10 3 , − 1 0 4 ≤ � ≤ 1 0 4 −10 4 ≤d(225点数解答 | 2026-01-23 19:51:03)27
- [字节豆包] 给定一个包含 个元素的**整数**序列 ,记作 。 求另一个包含 个元素的待定**整数**序列 ,记 ,使得 且 尽可能的小。 输入 第一行一个整数 ,表示序列元素个数。 第二行 个整数,表示序列 。 输出 一行一个整数,表示 的前提下 的最小值。 样例输入 复制 2 4059 -1782 样例输出 复制 99 提示 对于 的数据, , ,且 序列不全为 来源/分类(746点数解答 | 2026-01-24 13:14:40)29
- [字节豆包] 给以下代码进行注释: fn czzb a b c=(--已知三点a、b、c,求c点在ab直线上的垂足坐标 ab=b-a; ac=c-a; lab=length ab; lac=length ac; cosct=((dot ab ac)/(lab*lac));--求出cosct abxl=if cosct>=0 then ab/lab;else -1*(ab/lab)--ab的单位向量 lty=abs (lac*cosct);--求出投影长度 xl=lty*abxl;--求出偏移向量 return (a+xl);--返回垂足坐标 ) -- fn qiumianji v1 v2 v3=( -- local chang=length (v3-v1); -- local v0=czzb v1 v3 v2; -- local gao=length (v0-v2) -- local mj=0.5*chang*gao; -- return mj; -- ) fn qiumianji v1 v2 v3=( local a=length (v1-v2); local(324点数解答 | 2024-10-16 18:51:32)283
- [字节豆包] 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(385点数解答 | 2025-01-08 03:43:54)427
- [字节豆包] 题目(description): 卫星导航系统(如我国自主研发的北斗卫星导航系统)能实时获取位置、速度、时间等时空信息,在交通运输、农林渔业、气象测报、通信授时、救灾减灾、公共安全等领域都得到了广泛应用。 在应用层面,卫星导航系统一般以报文方式进行数据传输,其中$gprmc是常用报文之一,基本的格式如下: $gprmc,<1>,<2>,<3>,<4>,<5>,<6>,<7>,<8>,<9>,<10>,<11>,<12>*hh <1> utc时间,hhmmss.sss(时分秒.毫秒)格式 <2> 定位状态,a=有效定位,v=无效定位 <3> 纬度ddmm.mmmm(度分)格式 <4> 纬度半球n(北半球)或s(南半球) <5> 经度dddmm.mmmm(度分)格式 <6> 经度半球e(东经)或w(西经) <7> 地面速率(000.0~999.9节) <8> 地面航向(000.0~359.9度,以正北为参考基准) <9> utc日期,ddmmyy(日月年)格式 <10> 磁偏角(000.0~180.0度,前面的0也(346点数解答 | 2025-01-08 03:46:29)423
- [GPT] 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 如: 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt中的行 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后为 1:l p[54(811点数解答 | 2024-12-05 12:58:37)350
- [讯飞星火] 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(531点数解答 | 2024-12-05 13:20:42)339
- [阿里通义] 帮我写一个批处理文件,内容如下: 1、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中p=的值改为"参数表.xlsx"中c列对应的值; 2、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中t=的值改为"参数表.xlsx"中b列对应的值; 3、如果在"参数表.xlsx"a列中的值找到与"文件.txt"中相同的值,则把此行中s=的值改为"参数表.xlsx"中d列对应的值; 参数表.xlsx中a列a1,a2,a3;b列1.5,2,3;c列为10,20,30;d列100,101,102; 文件.txt数据 1:l p[54:a1] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=10,ed=1]; 2:l p[57:a2] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=11,ed=1]; 3:l p[67:a3] 2000mm/sec cnt100 spot[sd=1,p=25,t=2.0,s=12,ed=1]; 文件.txt修改后数据 1:l p[54:a1(495点数解答 | 2024-12-05 13:22:26)327