在 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 次瀏覽

開啟你的職業生涯

完成課程以獲得認證

開始
廣告