对于一个合法的操作序列我们需要满足两个条件,第一个是U与D的数量相等,第二个是对与字符串的任意一个前缀U的数量必须大于等于D的数量,因为对于任意一个D都需要一个在它前面的U与之对应,所以寻找最长合法前缀只需要从前至后统计U与D的数量,当D数量大于U数量时所有之后的前缀便不合法,数量相等时便为一个合法前缀
#include <iostream>
#include <string>
using namespace std;
一只机器人在一条竖直直线上移动,从高度 0 出发。每一步可以选择向上移动一个单位(用 ( 表示)或向下移动一个单位(用 ) 表示)。
给定一个由 ( 和 ) 组成的操作序列,我们称序列的一个前缀是合法的,当且仅当机器人按该前缀指令移动时,其高度从未变为负数,且执行完该前缀后高度恰好回到 0。
请你计算给定序列的最长合法前缀的长度。
序列的长度 n 满足 1≤n≤105。
By signing up a CodeFun2000 universal account, you can submit code and join discussions in all online judging services provided by us.