Thích_Yến_Trân
Lồn phải lá han


À đọc kỹ lại thì không validTao đọc rule rồi, bài này chưa làm. Cho tao hỏi ")(" thì có valid không?
Vi phạm rule thứ 3Tao đọc rule rồi, bài này chưa làm. Cho tao hỏi ")(" thì có valid không?
* can be replace by ‘(‘. Nên return true là đúng màVi phạm rule thứ 3
Ý nó là string “)(“ vi phạm rule thứ 3 nên invalid. K fai example 3* can be replace by ‘(‘. Nên return true là đúng mà
Vậy trường hợp “)))(((“ nó vẫn return true ahk?Ý tưởng tao là vậy. Cho hai pointer chạy hai đầu, xong đếm ngoặc trái ngoặc phải. Nếu trên đường đi gặp *, nếu số ngoặc trái bé hơn ngoặc phải thì countLeft++. Nếu số ngoặc phải bé hơn ngoặc trái thì countRight++. Còn bằng nhau thì kệ mẹ. Hết vòng lặp, ra ngoài xem số ngoặc trái có bằng ngoặc phải k.
Tao có để edge case ở trên kìa màyVậy trường hợp “)))(((“ nó vẫn return true ahk?
Còn case này “())(()”. Của m ra true nhỉTao có để edge case ở trên kìa mày
ý tưởng là thế, rất mạch lạc rõ ràng và vô cùng dễ hiểumải xem fim sếch, giờ mới đọc đề xong
mẹ bài xàm loz này có gì đâu
1. duyệt 1 lượt từ dấu ')' đầu tiên đến dấu cuối cùng chuỗi có dấu '(' thì return false // đến đây để chắc kèo '(' luôn ở nửa trái, ')' ở nửa phải
2. đếm xem bao nhiêu dấu '(', ')', bao nhiêu dấu * ở trước '(' cuối cùng , bao nhiêu dấu * ở sau ')' đầu tiên, bao nhiêu dấu * ở giữa ( cuối cùng và ) đầu tiên // gọi là starleft, starmid, starright
nếu '(' = ')' thì return true
nếu '(' > ')' k lần, nếu k <= starright + starmid thì return true; k > starright + starmid return false;
nếu '(' < ')' k lần, nếu k <= starleft + starmid thì return true; k > starleft + starmid return false;
Ý thứ 1 của mày nếu test cái này sẽ bị sai "(((())))()"mải xem fim sếch, giờ mới đọc đề xong
mẹ bài xàm loz này có gì đâu
1. duyệt 1 lượt từ dấu ')' đầu tiên đến dấu cuối cùng chuỗi có dấu '(' thì return false // đến đây để chắc kèo '(' luôn ở nửa trái, ')' ở nửa phải
2. đếm xem bao nhiêu dấu '(', ')', bao nhiêu dấu * ở trước '(' cuối cùng , bao nhiêu dấu * ở sau ')' đầu tiên, bao nhiêu dấu * ở giữa ( cuối cùng và ) đầu tiên // gọi là starleft, starmid, starright
nếu '(' = ')' thì return true
nếu '(' > ')' k lần, nếu k <= starright + starmid thì return true; k > starright + starmid return false;
nếu '(' < ')' k lần, nếu k <= starleft + starmid thì return true; k > starleft + starmid return false;
dấu ) đầu tiên của chuỗi đến dấu cuối cùng là đoạn này "))))()" lòi ra dấu ( kiaÝ thứ 1 của mày nếu test cái này sẽ bị sai "(((())))()"
Cái này thì không có trong edge cases. Cái này handle bằng logic mà mày implement thôi. Mà t thấy thuật toán của tao cũng đ đúng lắm. Để chút về nhà mở máy ra xemCòn case này “())(()”. Của m ra true nhỉ
Mày nói từ dấu ")" đến dấu ")" cuối cùng, trong đoạn đó nếu gặp "(" thì return false. Trường hợp đó không đúng với case này "(())()", case này vẫn là truedấu ) đầu tiên của chuỗi đến dấu cuối cùng là đoạn này "))))()" lòi ra dấu ( kia
sao sai được