File tree Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Expand file tree Collapse file tree 2 files changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ /**
2+ * 2116. Check if a Parentheses String Can Be Valid
3+ * https://leetcode.com/problems/check-if-a-parentheses-string-can-be-valid/
4+ * Difficulty: Medium
5+ *
6+ * A parentheses string is a non-empty string consisting only of '(' and ')'. It is valid
7+ * if any of the following conditions is true:
8+ * - It is ().
9+ * - It can be written as AB (A concatenated with B), where A and B are valid parentheses
10+ * strings.
11+ * - It can be written as (A), where A is a valid parentheses string.
12+ *
13+ * You are given a parentheses string s and a string locked, both of length n. locked is a
14+ * binary string consisting only of '0's and '1's. For each index i of locked,
15+ * - If locked[i] is '1', you cannot change s[i].
16+ * - But if locked[i] is '0', you can change s[i] to either '(' or ')'.
17+ *
18+ * Return true if you can make s a valid parentheses string. Otherwise, return false.
19+ */
20+
21+ /**
22+ * @param {string } s
23+ * @param {string } locked
24+ * @return {boolean }
25+ */
26+ var canBeValid = function ( s , locked ) {
27+ if ( s . length % 2 ) return false ;
28+
29+ let symmetrical = 0 ;
30+ for ( let i = 0 ; i < s . length ; i ++ ) {
31+ if ( locked [ i ] === '0' || s [ i ] === '(' ) {
32+ symmetrical ++ ;
33+ } else {
34+ symmetrical -- ;
35+ }
36+ if ( symmetrical < 0 ) {
37+ return false ;
38+ }
39+ }
40+
41+ symmetrical = 0 ;
42+ for ( let i = s . length - 1 ; i >= 0 ; i -- ) {
43+ if ( locked [ i ] === '0' || s [ i ] === ')' ) {
44+ symmetrical ++ ;
45+ } else {
46+ symmetrical -- ;
47+ }
48+ if ( symmetrical < 0 ) {
49+ return false ;
50+ }
51+ }
52+
53+ return true ;
54+ } ;
Original file line number Diff line number Diff line change 3833832095|[ Delete the Middle Node of a Linked List] ( ./2095-delete-the-middle-node-of-a-linked-list.js ) |Medium|
3843842099|[ Find Subsequence of Length K With the Largest Sum] ( ./2099-find-subsequence-of-length-k-with-the-largest-sum.js ) |Medium|
3853852114|[ Maximum Number of Words Found in Sentences] ( ./2114-maximum-number-of-words-found-in-sentences.js ) |Easy|
386+ 2116|[ Check if a Parentheses String Can Be Valid] ( ./2116-check-if-a-parentheses-string-can-be-valid.js ) |Medium|
3863872129|[ Capitalize the Title] ( ./2129-capitalize-the-title.js ) |Easy|
3873882154|[ Keep Multiplying Found Values by Two] ( ./2154-keep-multiplying-found-values-by-two.js ) |Easy|
3883892185|[ Counting Words With a Given Prefix] ( ./2185-counting-words-with-a-given-prefix.js ) |Easy|
You can’t perform that action at this time.
0 commit comments