zoukankan      html  css  js  c++  java
  • 在字符串中删除特定的字符

    题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。

    分析此题的文章很多(能够讲解清楚是种能力),给出参考性代码,用代码说话

    #include <stdio.h>
    #include
    <memory.h>
    /***********************************************************************************
    36
    输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
    例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。
    **********************************************************************************
    */
    int delchar(char *src, char *dst);
    int main()
    {
    char src[] = "They are students.";
    char del[] = "aeiou";
    delchar(src, del);
    printf(
    "Output : %s\n",src);
    return 0;
    }

    int delchar(char *src, char *dst)
    {
    char *begin = src;
    char *end = src;
    char hashtable[256];
    int i = 0;
    memset(hashtable,
    0,sizeof(hashtable));
    while(*dst)
    ++hashtable[*dst++];
    while(*end)
    {
    if(!hashtable[*end])//del character not detected
    {
    *begin = *end ;
    ++begin;
    }
    ++end;

    }

    *begin= '\0';
    }

    此段代码有两点注意

    1.用到了hash的思想来映射字符串。

    2.两个临时指针恰到好处,边遍历边覆盖(即删除操作)

    参考文章

    每天一道算法题12 在字符串中删除特定的字符 

    从字符串中删除指定字符 

  • 相关阅读:
    CF321B Solution
    CF722D Solution
    CF729E Solution
    CF1447E Solution
    CF962F Solution
    DropDownList绑定数据
    连接数据库
    jqm随记的东西
    正则表达式过滤超链接内容(.net)
    linq lambda操作list的例子
  • 原文地址:https://www.cnblogs.com/westfly/p/1963866.html
Copyright © 2011-2022 走看看