题目要求寻找字符串的最长合法前缀,其中合法前缀需满足两个条件:
balance(初始为 0)。遇到 + 则 balance 加 1,遇到 - 则 balance 减 1。扫描结束后,balance 必须恰好为 0。balance 必须始终大于或等于 0。基于这两个条件,可以采用一次遍历的方法:
给定一个仅由字符 + 和 - 组成的字符串,我们称它的一个前缀是合法的,当且仅当从前往后扫描该前缀时,维护一个累加值(初始为 0),每遇到一个 + 就将累加值加 1,每遇到一个 - 就将累加值减 1,且在整个扫描过程中累加值始终不小于 0,并且扫描结束时累加值恰好为 0。空前缀视为合法。请你找出该字符串的最长合法前缀的长度。
字符串的长度 n 满足 1≤n≤105,且保证字符串仅由字符 + 和 - 组成。
第一行包含一个整数 n,表示字符串的长度。
第二行包含一个长度为 n 的字符串,仅由字符 + 和 - 组成。
Scan the QR code below with WeChat to sign in
First-time scan will create your account automatically
请使用微信扫描下方二维码完成注册