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

C語言練習實例32:刪除字符串中指定字符集

     編輯:C 語言實例練習

C語言練習實例32:刪除字符串中指定字符集

本實例實現通用字符刪除函數:根據字符集 charSet 從字符串 str 中刪除所有屬於該集合的字符。

算法邏輯

  • 建立 256 長度查找表 hash,標記需刪除字符(ASCII 碼為下標)。
  • 雙指針 currentIndex 指向寫入位置,遍歷原字符串,若字符不在刪除集則寫入並前移。
  • 最後在 currentIndex 處添加 '\0' 截斷。

源代碼

// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鳥教程. All rights reserved.
//
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* deleteCharacters(char *str, char *charSet) {
    int hash[256];
    if (NULL == charSet) return str;
    for (int i = 0; i < 256; i++) hash[i] = 0;
    for (int i = 0; i < strlen(charSet); i++)
        hash[charSet[i]] = 1;
    int currentIndex = 0;
    for (int i = 0; i < strlen(str); i++) {
        if (!hash[str[i]])
            str[currentIndex++] = str[i];
    }
    str[currentIndex] = '\0';
    return str;
}

int main() {
    char s[2] = "a";
    char s2[5] = "aca";
    printf("%s\n", deleteCharacters(s2, s));
    return 0;
}

運行結果

c

優點

O(n+m) 時間,O(1) 額外空間(固定 256 整數),原地修改,支持任意字符集刪除。

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