`
steven-zhou
  • 浏览: 213357 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

有字符串s1和s2,要求在s1中删除所有s2的字符,算法要快

阅读更多
例如:
str1为 "asdfsa123fasdf123452345fasfasdf182734891624389sadfaklsjfklj"
str2为 "0123456789"
删除后
str1为 "asdfsafasdffasfasdfsadfaklsjfklj"

void del_chars(char *str, char *chars)
{
    char ascii_buff[256] = {0};
    char buf[strlen(str)];
    char *ps1;
    char *ps2;

    ps1 = chars;
    while (*ps1) { // 遍历chars,将要被删除的字符对应数组的位置置为1。
        ascii_buff[*ps1++] = 1;
    }

    ps2 = str;
    while (*ps2) { // 遍历str,将str中要被删除的字符也置为1。
        if ( ascii_buff[*ps2] == 1 ) {
            *ps2 = 1;
        }
        ps2++;
    }

    ps1 = str; // 将str中所有为1的位置清理掉。
    ps2 = buf;
    while (*ps1) {
        if (*ps1 != 1) {
            *ps2 = *ps1;
            ps2++;
        }
        ps1++;
    }
    *ps2 = '\0';
    strcpy(str, buf);
}

分享到:
评论

相关推荐

    比较字符串1

    在给定的问题中,我们有两个字符串s1和s2,我们需要比较它们的字典序。由于题目保证了每个字符串都不是另一个的前缀,我们可以直接从字符串的开头开始比较,逐个字符检查它们的ASCII码值。 如果s1和s2相等,根据...

    C语言程序设计-编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不能使用strcpy函数。拷贝时,

    编写一个程序,将字符数组s2中的全部字符拷贝到字符数组s1中,不能使用strcpy函数。拷贝时,'\0'也要拷贝过去。 (代码提示:for(i=0;i(s2);i++) s1[i]=s2[i];)

    文思的题--输入字符串S3,将在S1中的出现的字符串S2都替换成S3[文].pdf

    在开始之前,我们需要输入两个字符串S1和S2。S1是原始字符串,而S2是要在S1中查找的子字符串。我们可以使用C语言的scanf函数来输入这两个字符串。 第二步:查找S2在S1中的出现次数和位置 在输入S1和S2后,我们需要...

    编写函数void fun(char *s,char *t,char *p)将未在字符串s中出现、而在字符串t中出现的字符, 形成一个新的字符串放在p中,p中字符按原字符串中字符顺序排列,但去掉重复字符。

    题目要求我们找出字符串`t`中所有不在字符串`s`中出现的字符,并按照`t`中的顺序排列组成新的字符串存储到`p`所指向的空间里。同时,新字符串`p`中不能包含重复的字符。 - **示例一**:如果`s`为"12345",而`t`为...

    DELPHI 计算两个字符串相似度 LCS算法(附源代码)

    假设我们有两个字符串S1和S2,LCS算法会找到S1和S2中没有改变顺序的最长子串。例如,对于字符串"1234"和"51234",它们的LCS是"1234",长度为4。 LCS算法通常采用动态规划的方法来解决。在DELPHI中,我们可以创建一...

    字符串相似度算法 levenshtein distance 编辑距离算法

    假设我们有两个字符串S1和S2,长度分别为m和n,我们可以构建一个m+1行、n+1列的矩阵。初始化矩阵的第一行和第一列为0到m和0到n的序列,然后根据以下规则填充矩阵: 1. **插入操作**:如果S1的第i个字符和S2的第j个...

    Delphi计算字符串的相似度

    在编程领域,字符串的相似度计算是一个常见的任务,特别是在文本处理、信息检索和自然语言处理中。本篇文章将深入探讨如何在Delphi环境下计算字符串的相似度,以及相关的技术细节。 Delphi是一种基于Object Pascal...

    Java 推荐系统 字符串 余弦相似度 算法

    根据给定的文件信息,本文将详细介绍如何使用Java实现基于字符串的余弦相似度算法,并应用于推荐系统中。 ### 一、引言 在推荐系统领域,为了衡量两个字符串之间的相似性,通常会采用多种算法,其中余弦相似度算法...

    使用最短编辑距离算法判断两个字符串的相似度

    假设我们有两个字符串S1和S2,长度分别为m和n。我们可以构建一个m+1行、n+1列的矩阵,其中每个单元格[i][j]表示将S1的前i个字符转换为S2的前j个字符所需的最小操作次数。矩阵的边界值初始化为i或j对应的字符数,因为...

    计算两字符串的编辑距离

    例如,我们有字符串s1="kitten"和s2="sitting",我们可以构建一个7x7的矩阵,矩阵的对角线上的值(除了第一行和第一列)都是0,因为将一个空字符串转换为自身不需要任何操作。然后,我们可以逐行逐列填充矩阵,根据...

    动态规划—最短编辑问题—(非常详细分析以及代码)

    * 定义两个字符串s1 ,s2 * 比较两字符串的某两个相同位置时:(例如s1[i] s2[j] 这时i=j)有三种办法 * 1.把字符ch1变成ch2, 使得s1与s2字符串在该处相同 * 2.删除s1当中的该字符ch1,使得s1与s2字符串在该处相同 ...

    leetcode数组下标大于间距-algorithm_java:实现数据结构和算法

    leetcode数组下标大于间距 ...输入三个字符串s1、s2和s3,判断第三个字符串s3是否由前两个字符串s1和s2交错而成, 即不改变s1和s2中各个字符原有的相对顺序,例如当s1 = “aabcc”,s2 = “dbbca”, s3 =

    c char 串 模式与匹配算法

    7. `Concat(&T, S1, S2)`:将S1和S2连接成一个新的字符串T。 8. `SubString(&Sub, S, pos, len)`:从S中提取从位置pos开始,长度为len的子串到Sub。 9. `Index(S, T, pos)`:查找字符串S从位置pos开始的子串中,第一...

    C++实现找出两个字符串中最大的公共子串

    在编程领域,字符串操作是常见的任务之一,尤其是在算法设计和数据处理中。本主题将深入探讨如何使用C++语言来实现一个算法,该算法能够找出两个字符串中的最大公共子串。公共子串是指同时存在于两个或多个字符串中...

    字符串处理中的常见问题

    - `int strcmp(char *s1, char *s2)`:比较两个字符串`s1`和`s2`。 - `int strncmp(char *s1, char *s2, size_t n)`:比较`s1`和`s2`的前`n`个字符。 - `char *strstr(char *haystack, char *needle)`:在`haystack`...

    串思维导图(字符串).pdf

    模式匹配算法是指在字符串中搜索子串的算法,例如,BF 算法和 KMP 算法。BF 算法是指暴力匹配算法,它通过遍历整个字符串来搜索子串。KMP 算法是指 Knuth-Morris-Pratt 算法,它通过预处理字符串来加速搜索。 BF ...

    JavaScript自定义函数实现查找两个字符串最长公共子串的方法

    本文实例讲述了JavaScript自定义函数实现查找两个字符串最长公共子串的方法。分享给大家供大家参考,具体如下: //查找两个字符串的最长公共子串 function findSubStr(s1,s2){ var S=sstr= ,L1=s1.length,L2=s2....

    mysql 计算字符串相似度

    - `l1` 和 `l2`:分别表示输入字符串 `s1` 和 `s2` 的长度。 - `i` 和 `j`:循环索引变量。 - `_ss`:临时存储从 `s1` 中提取的单个字符。 - `sum`:记录匹配字符的数量。 ##### 计算相似度 ```sql SET l1 = CHAR_...

    一种特殊的线性 表仅有字符组成的串

    在计算机科学中,字符串(String)是一种特殊类型的线性数据结构,它的数据元素仅由单个字符组成。这种数据结构广泛应用于非数值处理任务,比如处理文本信息,如学生姓名、籍贯等。字符串在很多编程语言中都有专门的...

Global site tag (gtag.js) - Google Analytics