4 条题解
-
0
勇闯无人区!这道题其实不难
首先是输入
#include <iostream> #include <cstdio> #include <string> using namespace std; int main() { int n; cin >> n; string s; cin >> s; }
接着就是核心。我们用for循环遍历字符串s的一个个字符。 当在连续是A的段上把这个段的长度(也就是这个段里A的个数)一个个加,当结束时判断当前段的长度比目前字符串s里最高的段的长度哪个大,如果大就把最高的段的长度替换为当前段的长度
核心代码:
int maxn = 0;//目前字符串s里最高的段的长度 int nown = 0;//当前段的长度 bool isin = false;//为了方便判断是否在段里,定义一个bool变量 for (int i = 0; i < s.length(); i++)//循环 { if (s[i] == 'A' && isin == false)//进入段 { isin = true;//进入段 } if (s[i] != 'A' && isin == true)//结束该段 { isin = false;//退出段 if (nown > maxn)//判断谁大 { maxn = nown; } nown = 0; } if (i == (s.length() - 1) && isin == true)//当已经是最后一个字符时也要结束段并判断 { if (nown +1> maxn) { maxn = nown+1; } break; } if (isin == true) { nown++; } } }
附上ACcode:
#include <iostream> #include <cstdio> #include <string> using namespace std; int main() { int n; cin >> n; string s; cin >> s; int maxn = 0; int nown = 0; bool isin = false; for (int i = 0; i < s.length(); i++) { if (s[i] == 'A' && isin == false) { isin = true; } if (s[i] != 'A' && isin == true) { isin = false; if (nown > maxn) { maxn = nown; } nown = 0; } if (i == (s.length() - 1) && isin == true) { isin = false; if (nown +1> maxn) { maxn = nown+1; } nown = 0; break; } if (isin == true) { nown++; } } cout << maxn; return 0; }
-
-2
写题解请注意
鼓励大家写题解,但注意题解格式。
题解一定要有思路解析或代码注释,能否让别人理解你的思路
也是你的能力的检验,不要只放无意义的代码给大家复制,那就失去了做题的初心。
给代码两端加上这个会舒服一些
```cpp
你的代码
```
</span>
这个点在键盘的左上角tab上面那个键,注意切换输入法
#include<iostream> using namespace std; int main() { int n; cin>>n;//这是一个注释 return 0; }
请注意严禁抄袭题解,写题解不要只放代码,需加上你的思路或代码注释。
抄袭题解一经发现直接取消成绩。
题解被删除的可能
- 代码不符合格式规范
- 没有思路讲解或者没有注释,
- 无意义的题解
大家携手共同维护一个良好的编程环境,如果一经发现,多次作乱。可能会被管理员拉黑,请注意,一旦拉黑即失去登陆资格。
- 1
信息
- ID
- 537
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 80
- 已通过
- 47
- 上传者