문자열 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