首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 算法:查找字符串中第一個只出現一次的字符

     編輯:關於C++

問題描述

給定字符串,找出首個出現次數為 1 的字符。例:「abaccdeff」→ 'b'。

解法:計數數組 + 兩次遍歷

  1. 建立大小 256 的整型數組 cnt,統計每個 ASCII 字符出現次數
  2. 再次遍歷字符串,首個 cnt[ch]==1 即為答案

完整代碼

#include <iostream>
using namespace std;

char firstUniqueChar(const char* str) {
    if (!str) return '\0';
    int cnt[256] = {0};
    for (const char* p = str; *p; ++p) cnt[(unsigned char)*p]++;
    for (const char* p = str; *p; ++p)
        if (cnt[(unsigned char)*p] == 1) return *p;
    return '\0';
}

int main() {
    const char* s = "abcddeeff";
    cout << firstUniqueChar(s) << endl; // 輸出 b
    return 0;
}

關鍵細節

  • 字符作數組下標時轉 unsigned char 避免負索引
  • 空間 O(1)(固定 256),時間 O(n)
  • 返回 '\0' 表示無符合條件字符

擴展:Unicode/多字節字符

若輸入為 UTF-8 或寬字符,需改用 unordered_map<string,int> 或 unordered_map<wchar_t,int> 統計,邏輯不變。

此題是「哈希統計 + 順序掃描」的標準模式,適用於眾多「第一個滿足條件」類問題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved