5948.判断一个括号字符串是否有效
class Solution { public boolean canBeValid(String s, String locked) { int len = s.length(); int numRight = 0, numLeft = 0; // numRight表示不可改变的右括号的数量,numLeft表示不可改变的左括号的数量 // 如果字符串的个数为奇数,直接排除 if (len%2==1) return false; // 从左往右遍历,把不可改变的右括号“安顿好” for (int i = 0; i < len; i++) { if (s.charAt(i) == ')' && locked.charAt(i) == '1') { numRight++; if (i+1-numRight < numRight) { // 该位置之前一共有r个不可改变的右括号,能够改变的括号数量为(i+1-r) return false; } } } // 从右往左遍历,把不可改变的左括号“安顿好” for (int i = len-1; i >= 0; i--) { if (s.charAt(i) == '(' && locked.charAt(i) == '1') { numLeft++; if (len-i-numLeft < numLeft) { return false; } } } // 如果都没有问题 return true; } }
作者:Ryanjie
出处:http://www.cnblogs.com/ryanjan/
本文版权归作者和博客园所有,欢迎转载。转载请在留言板处留言给我,且在文章标明原文链接,谢谢!
如果您觉得本篇博文对您有所收获,觉得我还算用心,请点击右下角的 [推荐],谢谢!