Trong bài toán này, chúng ta được cung cấp một chuỗi. Nhiệm vụ của chúng ta là in tất cả các ký tự riêng biệt của chuỗi theo thứ tự chúng xuất hiện trong chuỗi.
Hãy lấy một ví dụ để hiểu vấn đề của chúng ta,
Input: tutorials Point Output: uralsPn
Có nhiều cách để giải quyết vấn đề này nhưng chúng ta sẽ thảo luận về cách hiệu quả nhất. Cách đơn giản bao gồm lồng các vòng lặp.
Đối với điều này, chúng tôi sẽ sử dụng hai mảng có kích thước 256 (các ký tự 8 bit được lưu trữ).
Đầu tiên, chúng ta sẽ khởi tạo tất cả các giá trị của mảng đếm thành 0 và tất cả các giá trị của mảng chỉ số thành n (độ dài của chuỗi). Trên truyền của chuỗi str và đối với mọi ký tự c, hãy tăng số lượng [x], nếu số lượng [x] =1, chỉ số [x] =i. Nếu count [x] =2, index [x] =n. Sắp xếp các chỉ mục và in các ký tự.
Ví dụ
Mã để hiển thị việc triển khai giải pháp của chúng tôi,
#include <bits/stdc++.h> using namespace std; const int MAX_CHAR = 256; void printDistinctCharacters(string str) { int n = str.length(); int count[MAX_CHAR]; int index[MAX_CHAR]; for (int i = 0; i < MAX_CHAR; i++) { count[i] = 0; index[i] = n; } for (int i = 0; i < n; i++) { char x=str[i]; ++count[x]; if (count[x] == 1 && x !=' ') index[x] = i; if (count[x] == 2) index[x] = n; } sort(index, index+MAX_CHAR); for (int i=0; i<MAX_CHAR && index[i] != n; i++) cout<<str[index[i]]<<" "; } int main() { string str = "tutorialsPoint"; cout<<"All distinct Characters of the string '"<<str<<"' are :\n"; printDistinctCharacters(str); return 0; }
Đầu ra
All distinct Characters of the string 'tutorialsPoint' are − u r a l s P n