Trong bài viết này, ta được cho một số n, và ta cần loại bỏ chữ số lặp lại trong một số cho trước.
Input: x = 12224 Output: 124 Input: x = 124422 Output: 1242 Input: x = 11332 Output: 132
Trong bài toán cho trước, ta sẽ đi qua tất cả các chữ số và loại bỏ các chữ số lặp lại.
Phương pháp tìm giải pháp
Trong phương pháp cho trước, ta sẽ đi qua tất cả chữ số của n từ phải sang trái. Ta đi qua chữ số của n bằng cách lấy modulo n với 10 rồi chia n cho 10. Bây giờ chữ số hiện tại là n modulo 10. Ta kiểm tra nó với chữ số trước. Nếu các chữ số bằng nhau, ta tiếp tục duyệt n. Nếu không giống nhau, ta thêm chữ số này vào số mới, thay đổi chữ số trước thành chữ số hiện tại, và tiếp tục vòng lặp.
Ví dụ
#include <bits/stdc++.h> #define MOD 1000000007 using namespace std; int main() { int n = 1222333232; // n cho trước int new_n = 0; // số mới int po = 1; // sẽ là bội của mười cho chữ số mới int prev = -1; // chữ số trước int curr; // chữ số hiện tại while(n) { curr = n % 10; if(prev != curr) { // nếu chữ số không lặp lại ta vào khối này new_n = new_n + (curr * po); // ta thêm chữ số mới vào new_n po *= 10; prev = curr; } n /= 10; } cout << new_n << "\n"; return 0; }Kết quả
123232
Giải thích mã trên
Trong phương pháp trên, ta đơn giản duyệt qua các chữ số của n. Bây giờ khi chữ số trước và chữ số hiện tại không khớp, ta thêm chữ số đó vào số mới, và khi chữ số được thêm, ta cũng tăng po, được dùng cho vị trí các chữ số. Bây giờ nếu chữ số hiện tại và trước khớp, ta không chạy khối này và tiếp tục vòng lặp cho đến khi n thành 0.
Kết luận
Trong bài viết này, ta giải quyết bài toán Loại bỏ chữ số lặp lại trong một số cho trước. Ta cũng học chương trình C++ cho bài toán này và phương pháp hoàn chỉnh (Bình thường) để giải quyết bài toán. Ta có thể viết cùng chương trình bằng ngôn ngữ khác như C, Java, Python và các ngôn ngữ khác. Hy vọng bạn thấy bài viết hữu ích.