这道题思维些许小寄。。。。
这道题刚好补充一下字符常量的知识:
字符常量
字符常量是用单引号括起来的一个字符,如'a'、'A'、'1'、'='。因此字符常量有以下特点:
I. 字符常量只能用单引号括起来,不能用双引号或其他符号。
II. 字符常量只能是单个字符,即单引号内只能有一个字符。
转义字符是一种特殊的字符常量,有以下特点:
I. 转义字符以反斜线"\"开头,后面跟一个或几个字符。
II. 转义字符具有特定的含义,不同于字符原有的意义。字符变量
I. 字符变量的类型说明符为char,字符变量定义格式为:char a;、char a,b;
II. 字符变量用来存储字符常量,字符值是以ASCII码的二进制形式存放在变量的内存单元之中的,如字符'x'的ASCII码是120,定义字符变量char a = 'x';,实际上字符变量a内存放120的二进制代码。若将整型值直接赋值给字符变量,如char a = 100;,实际上是将ASCII码为100的字符'd'赋值给了字符变量a。
III. 字符型可看做一种特别短的整型
类型说明符:[signed] char,表示的数值范围:-128 ~ 127,存储大小:1字节
类型说明符:unsigned char,表示的数值范围:0 ~ 255,存储大小:1字节
原文链接:https://blog.csdn.net/wuwuku123/article/details/103575620
题目中N<=50000 所以O(n^2)做法可能会超时
奶牛贝茜逃跑了,躲在了长满高草的山脊上。
农夫约翰为了抓回贝茜,决定在草地中匍匐前行,从而不被贝茜发现。
不幸的是,发现贝茜并没有那么容易。
约翰面前的草看起来像是一个长度为 N 的括号字符串,例如:
)((()())())
约翰清楚贝茜的后腿看上去就像一对相邻的左括号 ((
,她的前腿看上去就像一对相邻的右括号 ))
。
因此,贝茜的位置可以用一对索引 x<y 来描述,使得 ((
在位置 x 处被找到,))
在位置 y 处被找到。
请计算贝茜可能站立的不同位置的数量。
输入格式
共一行,包含一个长度为 N 的括号字符串。
输出格式
输出贝茜可能站立的不同位置的数量。
数据范围
1≤N≤50000
输入样例:
)((()())())
输出样例:
4
样例解释
4 种可能的站立位置如下所示:
1. )((()())())
^^ ^^
2. )((()())())
^^ ^^
3. )((()())())
^^ ^^
4. )((()())())
^^ ^^
#include<bits/stdc++.h>
using namespace std;
int main(){
string s;
int cnt=0,ans=0;
for(int i=0;i<s.size()-1;i++){
if(s[i]==')'&&s[i+1]==')')
ans+=cnt;
else if(s[i]=='('&&s[i+1]=='(')
cnt++;
}
cout<<cnt;
return 0;
}