Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm ký tự không lặp lại cuối cùng trong chuỗi trong C ++

Giả sử chúng ta có một chuỗi str. Chúng ta phải tìm ký tự không lặp lại cuối cùng trong đó. Vì vậy, nếu chuỗi đầu vào giống như "lập trình". Vì vậy, ký tự không lặp lại đầu tiên là ‘n’. Nếu không có ký tự nào như vậy thì trả về -1.

Chúng ta có thể giải quyết điều này bằng cách tạo một mảng tần số. Điều này sẽ lưu trữ tần số của mỗi ký tự của chuỗi đã cho. Khi tần suất đã được cập nhật, hãy bắt đầu duyệt qua chuỗi từ ký tự cuối cùng từng ký tự một. Sau đó, kiểm tra xem tần số được lưu trữ có phải là 1 hay không, nếu là 1 thì trả về, nếu không thì chuyển sang ký tự trước đó.

Ví dụ

#include <iostream>
using namespace std;
const int MAX = 256;
static string searchNonrepeatChar(string str) {
   int freq[MAX] = {0};
   int n = str.length();
   for (int i = 0; i < n; i++)
      freq[str.at(i)]++;
   for (int i = n - 1; i >= 0; i--) {
      char ch = str.at(i);
      if (freq[ch] == 1) {
         string res;
         res+=ch;
         return res;
      }
   }
   return "-1";
}
int main() {
   string str = "programming";
   cout<< "Last non-repeating character: " << searchNonrepeatChar(str);
}

Đầu ra

Last non-repeating character: n