在 C++ 中找到字符串中最后一个不重复的字符


假设我们有一个字符串 str。我们必须找到其中的最后一个不重复的字符。因此,如果输入字符串类似于“programming”。那么第一个不重复的字符是“n”。如果不存在这样的字符,则返回 -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

更新于:2019-12-18

203 次浏览

开启你的职业生涯

完成课程以获得认证

开始
广告
© . All rights reserved.