30/09/2018, 19:01
Code đếm kí tự khác nhau trong chuỗi C bị sai kết quả
> void demkhac(char s[100]){
> int dem=0;
> for(i=1;i<strlen(s)-1;i++){
> if(s[0]!=s[i]){
> dem++;
> }
> }
> printf("So ki tu khac nhau la : %d", dem);
> }
Bài liên quan
Cho e hỏi là tại sao em dùng hàm này để đếm kí tự khác nhau lại không ra kết quả đúng .Em so sánh kí tự đầu với các kí tự sau khác thì tăng biến đếm, nhưng tại sao lại không được ạ.Nếu sai code thì sửa lại giùm em ạ. Em mới học mong mọi người giúp đỡ
đơn giản mà: char thuộc [0,255] nên dùng mảng đếm là dc
hazz khó thật. thank b
Chắc vấn đề được solve rồi nhưng mình cũng xin mở rộng lên tập ký tự unicode luôn
Sử dụng bảng băm để code đơn giản hơn:
nói thật mk ms hk lên chả bíêt bạn viết j luôn
Sorry mình tưởng C++, post xong nhìn lại tag mới té ra là C
Cơ bản thì allChar của mình là 1 bảng băm (kiểu là std::unordered_set), tác dụng của nó là làm 1 cái kho lưu trữ những ký tự đã gặp khi duyệt chuỗi ký tự.
allChar.find == allChar.end sẽ là true khi ký tự đó chưa từng nằm trong kho.
emplace để bỏ ký tự đó vào kho.
return allChar.size là số lượng các ký tự đã bỏ vào trong kho.
mình test thử thì ok , bạn xem lại nha
mk đã hk c++ đâu