#27 [C++]. Hướng Dẫn Giải Bài Tập Xâu Kí Tự Trong C++ Phần II

  Рет қаралды 35,083

28tech

28tech

Күн бұрын

Пікірлер: 88
@28tech_
@28tech_ 2 жыл бұрын
Thông tin các khóa học mình đang hướng dẫn : 28tech.com.vn/
@phuan462
@phuan462 10 ай бұрын
uầy e chạy bằng tay bài 20 mới thấy cách giải ghê thật, nào làm lại mới nhớ được cái ý tưởng này, cảm ơn anh rất nhiều :3
@28tech_
@28tech_ 10 ай бұрын
Hehe, muốn học và làm những bài hay như vậy thì có thể tham khảo lớp C++ của anh nhé
@duylaikhuong3114
@duylaikhuong3114 Жыл бұрын
2:18 ở đoạn xâu abcaa thì đến xâu abcaab nó vẫn tính tiếp chứ anh tại xâu đấy nó vẫn có 3 ký tự khác nhau mà mong anh rep em mắc ở khúc này hơi lâu r
@tuananhnguyen403
@tuananhnguyen403 3 жыл бұрын
Yêu anh này vleu :3
@28tech_
@28tech_ 3 жыл бұрын
nghe hơi ghê. haha.
@khavovan8201
@khavovan8201 3 жыл бұрын
Đúng á bạn. Anh này mới làm yt mà mik cảm tình thiệt!
@28tech_
@28tech_ 3 жыл бұрын
@@khavovan8201 ờ chia sẻ cho a là được hehe.
@vuhoangbach189
@vuhoangbach189 6 ай бұрын
@@28tech_ quảng cáo ghê quá anh ơi :)))
@28tech_
@28tech_ 6 ай бұрын
@@vuhoangbach189 haha
@codekhongngu
@codekhongngu 3 жыл бұрын
anh ơi cho em hỏi sao chỗ bài 17 a khai báo mảng int cnt kiểu dữ lieeuuj số nguyễn mà cho string vào vẫn đúng ạ
@28tech_
@28tech_ 3 жыл бұрын
Đấy là char đấy chứ. Char hoặc nó là kí tự và nó cũng là số tương ứng vs mã ascii của kí tự đó
@vinhnguyencao3526
@vinhnguyencao3526 Жыл бұрын
anh ơi trong bài 20.2 với test case đầu tiên nếu đổi s1 thành "timetaproctice" thì xâu con nhỏ nhất chứa "toc" phải là oct nhưng mà viết theo code trong video thì chỉ ra được "taproc" thôi í.
@HatGiongTamHon896
@HatGiongTamHon896 Жыл бұрын
ban đầu m cx tưởng sai cơ nhưng viết code chạy thử vẫn ra oct b ạ
@khoatienbui825
@khoatienbui825 Жыл бұрын
lúc đầu mình cũng nghĩ là phải ra taproc thay vì oct nhưng với câu này if (cnt == s2.length()) thì vòng lặp while kia vẫn đi hết dc chuỗi @@
@buituanhiep15-39
@buituanhiep15-39 Жыл бұрын
anh ơi ở bài 17, ví dụ nếu test là abcaabc và k=3 thì: abcaab nó vẫn là 1 xâu con có 3 kí tự khác nhau mà anh, nma trong bài em thấy anh bảo đến b thì số lượng kí tự khác nhau đã vượt quá 3 là sao ạ
@sangle-yu2qh
@sangle-yu2qh Жыл бұрын
cùng thắc mắc, có vẻ e vẫn chưa hiểu bài lắm :( ai chỉ e vơiis ạ :(
@HảiĐứcLưu-f9i
@HảiĐứcLưu-f9i Ай бұрын
Hay quá anh
@BaoNguyên-u7q2t
@BaoNguyên-u7q2t 6 ай бұрын
A ơi, bài 27 nếu input là "1001" thì bị segmentation fault á a
@BDCAT_VuNgocPhuong
@BDCAT_VuNgocPhuong 3 жыл бұрын
ad cho em hoi: for(set :: it iterator it=s.begin();it!=s.end();it++){ cout
@28tech_
@28tech_ 3 жыл бұрын
Khác nhau mà, trường hợp 2 là nó duyệt từng phần tử của set luôn.
@BDCAT_VuNgocPhuong
@BDCAT_VuNgocPhuong 3 жыл бұрын
@@28tech_ th2 ko dùng con trỏ ạ
@thienquang3119
@thienquang3119 2 жыл бұрын
anh ơi cho em xin ảnh background ở chỗ time 1:25:10 với ạ em cảm ơn anh ạ
@28tech_
@28tech_ 2 жыл бұрын
em tìm ảnh heinsenberg breaking bad là nó ra ấy.
@codekhongngu
@codekhongngu 3 жыл бұрын
A ơi cho e hỏi ở bài 17 , sao cứ dếm bằg k lại phải ans ạ . Cơ mà đây là đếm dãy con liên tục mà , sao chỉ cần duyệt 1 lần như vậy là đc ạ , mong anh giải thích cho e hiểu ạ. Ví dụ như input là abcd 3 : thì đây là 2 sâu con chứ a nhỉ . Nếu như code của a thì là 1 xâu . Mong a gt cho e hiểu
@hungquann3745
@hungquann3745 3 жыл бұрын
7:13 đánh dấu nó đã xuất hiện hay chưa có ý nghĩa như nào ạ em vẫn k hiểu lắm
@28tech_
@28tech_ 3 жыл бұрын
ý là mỗi lần gặp một kí tự mới em sẽ đánh dấu là nó xuất hiện để tăng số lượng kí tự khác nhau mà mình gặp lên 1 đơn vị thôi mà. Tránh trường hợp có nhiều kí tự giống nhau khi đó mình cũng chỉ đếm nó xuất hiện 1 lần ở lần gặp đầu tiên thôi chứ không phải lần nào gặp cũng đánh dấu với đếm.
@khavovan8201
@khavovan8201 3 жыл бұрын
12:14 Vì sao ở đoạn này em code là : for (auto x : se1){ for (auto y : se2){ if (x != y) cout
@28tech_
@28tech_ 3 жыл бұрын
Bởi vì như thế e chỉ so sánh từ x, với 1 trong các từ ở trong set2, chứ ko phải tất cả các từ, muốn chỉ ra x không nằm trong set2 thì phải xét tất cả các từ chứ. Nên phải dùng set2 để find thằng x xem có hay không.
@vietnamnguyen7531
@vietnamnguyen7531 2 жыл бұрын
bài SUM STRING e chạy code bị văng lỗi: "terminate called after throwing an instance of 'std::length_error' what(): basic_string::_S_create" Thế này là sao vậy anh?
@quyetleduy6440
@quyetleduy6440 2 жыл бұрын
Cho em hỏi bài hiệu của 2 tập từ, tại sao trong if lại so sánh với se2.end() ạ
@28tech_
@28tech_ 2 жыл бұрын
Em phải học set trước để hiểu rõ hơn nhé
@TrangHoàng-r8d
@TrangHoàng-r8d Жыл бұрын
anh ơi anh cho em hỏi câu 27 nếu làm cách đó bị quá thời gian thì còn cách nào tối ưu hơn ko anh?
@c2-34-minhthu7
@c2-34-minhthu7 2 ай бұрын
anh ơi bài 17 với xâu abcaabc thì ban đầu đếm được 'abc' rồi khúc cuối lại đếm 'abc' là bị lặp rồi, phải ko ạ
@28tech_
@28tech_ 2 ай бұрын
Anh cũng nhớ rõ đề bài nữa
@huyhieunguyen1995
@huyhieunguyen1995 Жыл бұрын
anh lấy đâu lắm bài tập vậy, chỉ em với
@binhphuc3740
@binhphuc3740 3 жыл бұрын
anh oi thay vi dung memset sao minh khong dung cnt[256] = {0} o bai 17 ay a
@28tech_
@28tech_ 3 жыл бұрын
B cũng có thể làm như thế được :D nếu khai báo mảng cnt trong vòng lặp. Nói chung ko quan trọng lắm.
@PhucNguyen-rb3rk
@PhucNguyen-rb3rk 2 жыл бұрын
anh oi bai 21, neu khong su dung map thi lam sao a
@28tech_
@28tech_ 2 жыл бұрын
Này làm ko có map vất vả lắm e ạ
@28tech_
@28tech_ 2 жыл бұрын
Lại phải for trâu
@luphiniii
@luphiniii Жыл бұрын
bài đầu dùng set ngon hơn đó mí bạn
@duylaikhuong3114
@duylaikhuong3114 Жыл бұрын
how :VV
@luphiniii
@luphiniii Жыл бұрын
@@duylaikhuong3114 bạn duyệt 2 vòng lồng nhau nhé :D bạn duyệt qua từng kí tự(vòng 1) mỗi lần duyệt bạn tạo 1 cái set xong bạn duyệt vòng 2 bạn insert từng kí tự tính từ i trở đi (j = i)vào set nếu se.size()==3 bạn ++cnt; lớn hơn 3 bạn break:DDD
@quanohong7393
@quanohong7393 3 жыл бұрын
anh ơi phút thứ 44:55 if (ans > i - left + 1) { ans = i - left + 1; index = left; } ans = INT_MAX ạ cái if này có phải luôn đúng ko ạ :(((
@28tech_
@28tech_ 3 жыл бұрын
Nó chỉ đúng lần đầu thôi, những lần sau thì còn tùy vào i - left + 1 chứ :D
@quanohong7393
@quanohong7393 3 жыл бұрын
@@28tech_ à dạ vầng em hỉu òi ạ : )))
@SangNguyen-kr7qj
@SangNguyen-kr7qj 3 жыл бұрын
chỗ khởi tạo hàm set convert(s1) ở bài 2 em không hiểu lắm ạ @@ anh có video nào nói rõ hơn về cách khởi tạo đó không anh
@28tech_
@28tech_ 3 жыл бұрын
Anh tạo hàm convert rồi trả về set thôi mà
@SangNguyen-kr7qj
@SangNguyen-kr7qj 3 жыл бұрын
@@28tech_ em chưa thấy anh dùng cái đấy bao giờ nên hơi khó hiểu ak :
@SangNguyen-kr7qj
@SangNguyen-kr7qj 3 жыл бұрын
@@28tech_ tức là set ở đây cũng được hàm trả về tương tự int hay bool ở những bài trước đúng kh anh?
@28tech_
@28tech_ 3 жыл бұрын
@@SangNguyen-kr7qj đúng rồi, e có thể trả về set, map, vector ... mà
@SangNguyen-kr7qj
@SangNguyen-kr7qj 3 жыл бұрын
@@28tech_ vâng ạ em cảm ơn anh ^^
@vupham8570
@vupham8570 Жыл бұрын
Cho em hỏi bài 22 tại sao res += (char)(tmp % 10 + '0'); mà không phải là res += (char)(tmp % 10 - '0'); ạ
@13.nguyenviethung42
@13.nguyenviethung42 Жыл бұрын
+ '0' là chuyển từ số sang char còn - '0' là chuyển từ char sang số
@truong6201
@truong6201 3 жыл бұрын
anh ơi bài 17 test case thứ 2 ( aba 2 ) làm sao mà có 3 xâu con được vậy anh
@28tech_
@28tech_ 3 жыл бұрын
xâu a, xâu b, xâu aba nhé, là 3 xâu có cùng kí tự đầu cuối.
@truong6201
@truong6201 3 жыл бұрын
@@28tech_ đề nó hỏi là số xâu con có k ký tự khác nhau mà anh
@28tech_
@28tech_ 3 жыл бұрын
À sorry a đọc nhầm đề. 2 kí tự khác nhau ah. Ab ba và aba là 3 xâu có 2 kí tự khác nhau.
@BDCAT_VuNgocKhanh
@BDCAT_VuNgocKhanh 3 жыл бұрын
em làm bài loại bỏ 100 bằng find thì không được ac anh giải thích cho e đc k ạ
@28tech_
@28tech_ 3 жыл бұрын
Bạn thêm điều kiện check kết quả số kí tự bị xóa > 0 thì mới in ra nhé. Thấy người sub AC bảo thế. Còn cách làm thì ko vấn đề gì.
@BDCAT_VuNgocKhanh
@BDCAT_VuNgocKhanh 3 жыл бұрын
@@28tech_ tuyệt vời anh ơiiii
@MinChuong
@MinChuong Жыл бұрын
cái testcase thứ 2 của bài 20 : zoomlazapzo vs oza -> output apzo e chưa hiểu lắm e tưởng nó phải là omlaza
@MinhTam-op6xq
@MinhTam-op6xq 7 ай бұрын
theo mình là do khi while chạy đánh dấu thì hết while -> for vẫn chạy thì nó sẽ chạy đến khi gặp chữ o để cnt1[s[left]] cnt2[s[left]] tức là omlazapzo đến đây thì nó sẽ rút thành mlazapzo sau đó nó chạy while tiếp thì sẽ đến đc apzo, bài này mình ngâm thấy nó hay lắm.
@attruonggia8433
@attruonggia8433 3 жыл бұрын
Anh ơi em nghĩ code của bài 17 như thế này mới đúng ạ: int solve2(string &s, int k) { int ans = 0; for (int i = 0; i < s.length() - k +1; i++) { int cnt[256]{0}; int dem = 0; for (int j = i; j < (i + k); j++) { if (cnt[s[j]] == 0) { dem++; cnt[s[j]]++; } } if (d == k) { ans++; } } return ans; } Với từng phần từ của s ở cái vòng lập ngoài thì chỉ duyệt thêm 3 phần tử phía sau nó thôi, phần tử nào xuất hiện lần đầu thì cho cnt[s[j]]++; Sau khi duyệt xong 3 phần tử phía sau phần tử của vòng lập ngoài thì biến dem sẽ đc xác định, rồi dựa vào biến dem đó để xem ans có đc +1 thêm hay không. Em cảm ơn anh ạ
@28tech_
@28tech_ 3 жыл бұрын
Không được em ạ, ví dụ k =3 đi, giả sử có xâu abccccc thì code của e có đếm được những xâu abc, abcc, abccc hay không?
@attruonggia8433
@attruonggia8433 3 жыл бұрын
@@28tech_ Em chưa hiểu đề bài lắm, không biết là các xâu con này có liên tục nhau không hay là đứt đoạn cũng được anh nhỉ Vì nếu đứt đoạn cũng được thì tại sao ở chỗ test case cái xâu abc lại chỉ có hai xâu con là "ab" và "bc" mà không có "ac"
@28tech_
@28tech_ 3 жыл бұрын
@@attruonggia8433 uh xâu con liên tiếp đấy.
@attruonggia8433
@attruonggia8433 3 жыл бұрын
@@28tech_ Vậy sao cái test case trong video có xâu aba lại có output là 3 vậy anh
@28tech_
@28tech_ 3 жыл бұрын
@@attruonggia8433 xâu ab, xâu ba, xâu aba là 3 xâu có 2 kí tự khác nhau mà.
@BDCAT_VuNgocPhuong
@BDCAT_VuNgocPhuong 3 жыл бұрын
s.find(x) == string::npos vois s.find(x) == s.end() cg giong nhau ha anh
@28tech_
@28tech_ 3 жыл бұрын
Uh nhưng nó dùng cho string vs set
@xuannguyenthiminh7549
@xuannguyenthiminh7549 3 жыл бұрын
Anh có thể làm về OOP trong C++ đc ko anh?
@28tech_
@28tech_ 3 жыл бұрын
Chưa tới b ơi. Còn mấy phần nữa mới tới oop được nhé.
@angVanHuy-tf2rv
@angVanHuy-tf2rv 3 жыл бұрын
mấy bài này khoai quá
@28tech_
@28tech_ 3 жыл бұрын
Phần 3 còn khoai hơn :v
@ngoctutranhoang9725
@ngoctutranhoang9725 2 жыл бұрын
tinh ra bai 20.2 can tu duy that su luon ay ma cach giai anh hay vai em co gang tim trg hop de chung minh anh sai nhg deu ko tim dc :))
@28tech_
@28tech_ 2 жыл бұрын
Hahaha mới học đã thế rồi 😂😂😂
@quanohong7393
@quanohong7393 3 жыл бұрын
làm phần 3 đi anh
@28tech_
@28tech_ 3 жыл бұрын
Uh có video rồi mai mình up nốt phần 3.
@binhphuc3740
@binhphuc3740 3 жыл бұрын
anh oi bai 21 ay lam theo de bai thi minh chi can in ra so ki tu phan biet cua xau la duoc anh nhi =)) de khong chat che lam :D
@28tech_
@28tech_ 3 жыл бұрын
Không được, ví dụ test bbaac thì xâu con ngắn nhất khi đó phải là baac thì mới đủ chứa cả a, b, c e.
@binhphuc3740
@binhphuc3740 3 жыл бұрын
@@28tech_ ah :D em cam on anh a
@MinhTran-fo1yu
@MinhTran-fo1yu 2 жыл бұрын
B21 làm set nhanh hơn mà anh
@levanphong4275
@levanphong4275 3 жыл бұрын
Anh là sinh viên PTIT ạ
@28tech_
@28tech_ 3 жыл бұрын
Đúng rồi b.
@levanphong4275
@levanphong4275 3 жыл бұрын
@@28tech_ chào a hi em khoá D20 ạ
@28tech_
@28tech_ 3 жыл бұрын
@@levanphong4275 Ờ thế học chăm chỉ tí ko cuối kì lại trượt :v
coco在求救? #小丑 #天使 #shorts
00:29
好人小丑
Рет қаралды 120 МЛН
人是不能做到吗?#火影忍者 #家人  #佐助
00:20
火影忍者一家
Рет қаралды 20 МЛН
She made herself an ear of corn from his marmalade candies🌽🌽🌽
00:38
Valja & Maxim Family
Рет қаралды 18 МЛН
Giới thiệu MAP
8:48
Nhí Coder
Рет қаралды 2,5 М.