小朋友们在玩跳方格游戏。
$n$ 个方格排成一排,从左到右依次编号为 $1 \\sim n$。
每个方格中都标有一个方向箭头,箭头分为两种:>
和 <
。
>
表示进入方格的小朋友需要向右跳动一格距离,<
表示进入方格的小朋友需要向左跳动一格距离。
初始时,小朋友需要选择任意一个方格作为自己的初始位置,并从初始位置开始,按照每个方格的指示跳跃方向进行连续跳跃。
如果小朋友可以跳到界外,则视为赢得游戏胜利。
请你计算,为了赢得游戏胜利,共有多少个方格可以作为初始位置。
例如,当 $n=4$ 且每个方格中的箭头方向依次为 <<><
时,选择第 $1$ 个或第 $2$ 个方格作为初始位置,均可以跳到(左侧)界外,而选择第 $3$ 个或第 $4$ 个方格作为初始位置,则会陷入无限反复横跳,无法跳出界外,所以共有 $2$ 个方格可以作为初始位置。
输入格式
第一行包含整数 $n$。
第二行包含一个长度为 $n$ 的由 <
和 >
构成的字符串,其中第 $i$ 个字符表示第 $i$ 个方格中的方向箭头。
输出格式
一个整数,表示可以作为初始位置的方格数量。
数据范围
前 $3$ 个测试点满足 $1 \\le n \\le 10$。
所有测试点满足 $1 \\le n \\le 2 \\times 10^5$。
输入样例1:
4
<<><
输出样例1:
2
输入样例2:
5
>>>>>
输出样例2:
5
输入样例3:
4
>><<
输出样例3:
0
思路
只有左边连续的 $<$ 和右边连续的 $>$ 才能走出去。
代码
#include <iostream>
using namespace std;
int n;
string s;
int main () {
cin >> n >> s;
int ans = 0;
int i = 0;
while (i < n && s[i] == '<') i++,ans++;
i = n - 1;
while (i >= 0 && s[i] == '>') i--,ans++;
cout << ans << endl;
return 0;
}
为什么这样就能判断是连续的呢,难道不是一碰到’<’就会++吗?
o我明白了
e,自己懂了就好