문자열 str이 있다고 가정합니다. 그 안에서 반복되지 않는 마지막 문자를 찾아야 합니다. 따라서 입력 문자열이 "프로그래밍"과 같은 경우. 따라서 첫 번째 비반복 문자는 'n'입니다. 해당 문자가 없으면 -1을 반환합니다.
하나의 주파수 배열을 만들어 이를 해결할 수 있습니다. 이것은 주어진 문자열의 각 문자의 빈도를 저장합니다. 빈도가 업데이트되면 마지막 문자부터 하나씩 문자열 탐색을 시작합니다. 그런 다음 저장된 빈도가 1인지 확인하고 1이면 반환하고 그렇지 않으면 이전 문자로 이동합니다.
예시
#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);
} 출력
Last non-repeating character: n