在C ++中查找字符串中的最后一个非重复字符

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

以上是 在C ++中查找字符串中的最后一个非重复字符 的全部内容, 来源链接: utcz.com/z/335802.html

回到顶部