假设我们有一个字符串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