Re: [閒聊] 每日leetcode
2116. Check if a Parentheses String Can Be Valid
自己寫的很多行又有漏洞,只好去看大神寫的
思路:
字串長度是奇數就回傳false
遍歷字串,用open紀錄鎖住的括號數量,左括號加,右括號減
只要open加上沒被鎖住的括號數 < 0 就回傳false
之後再反向遍歷即可
C
bool canBeValid(char* s, char* locked) {
if(strlen(s) % 2 == 1) return 0;
int open = 0, close = 0, unlock_1 = 0, unlock_2 = 0;
for(int i = 0; i < strlen(s); i++){
if(locked[i] == '0') unlock_1++;
else if(s[i] == '(') open++;
else if(s[i] == ')') open--;
if(unlock_1 + open < 0) return 0;
int j = strlen(s) - i - 1;
if(locked[j] == '0') unlock_2++;
else if(s[j] == ')') close++;
else if(s[j] == '(') close--;
if(unlock_2 + close < 0) return 0;
}
return 1;
}
--
芙芙搖 https://i.imgur.com/MaRqFO6.gif





--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 223.141.220.186 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1736700791.A.82A.html
推
01/13 00:54,
11月前
, 1F
01/13 00:54, 1F
推
01/13 01:09,
11月前
, 2F
01/13 01:09, 2F
討論串 (同標題文章)
完整討論串 (本文為第 1269 之 1554 篇):