首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C 語言字符串去重:輸入 N 行字符串,輸出每行首次出現的字符(保持順序)

     編輯:程式設計綜合問答

題目復述

輸入:
2
aaaabbbb
AA
輸出:
ab
A

核心邏輯:順序去重

遍歷字符串,用布爾數組/位圖記錄字符是否已出現,**僅輸出首次出現的字符**。

標準 C 實現(ASCII 範圍)

#include 
#include 
#include 

void printUniqueChars(const char *str) {
    bool seen[256] = {false}; // 擴展 ASCII
    for (int i = 0; str[i]; i++) {
        unsigned char c = str[i];
        if (!seen[c]) {
            seen[c] = true;
            putchar(c);
        }
    }
    putchar('\n');
}

int main() {
    int n;
    scanf("%d", &n);
    getchar(); // 吞掉換行
    char line[1024];
    for (int i = 0; i < n; i++) {
        fgets(line, sizeof(line), stdin);
        line[strcspn(line, "\n")] = '\0'; // 去換行
        printUniqueChars(line);
    }
    return 0;
}

C++ 版本(更簡潔)

#include 
using namespace std;

int main() {
    int n; cin >> n;
    string s;
    while (n-- && cin >> s) {
        bool seen[256] = {};
        for (char c : s) if (!seen[c++]) cout << c;
        cout << '\n';
    }
}

關鍵點

  • 輸入可能包含空格?用 `fgets`/`getline` 讀整行。
  • 字符集超出 ASCII?改用 `unordered_set` 或 `set`。
  • 題目隱含「大小寫敏感」,'A' 與 'a' 視為不同字符。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved