不用string库实现字符串替换-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

不用string库实现字符串替换

2016-06-02 20:55:21 2040 1

当然复杂度越低越好.

strstr的O(m+n)实现也是比较困难.不过已经有解决的办法(kmp)

现在我们想解决一个strrp函数.最低的复杂度应该是O(m+n+k) 吧

最好不用库函数.

好吧,其实我思考了一段时间了. 声明啊:this not my homework.. i do it for good solutions but not for tasks..

难度有点高.大家一起找好算法..

sample input:

src="hello world"   //source string
sub_str="l"   //to be replaced
rpl_with="ab" //replace with
output should be:

"heababo worabd"
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:25:37
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    const char *kmp(const char *str, const char *substr)
    {
        return strstr(str, substr); //kmp的实现略过
    }
    
    void str_replace(char *dest, const char *src, 
            const char *pattern, const char *replace)
    {
        int lp = strlen(pattern), lr = strlen(replace);
        const char *temp = src, *last = src;
        while ((temp = kmp(temp, pattern)) != NULL)
        {
            //copy to dest
            memcpy(dest, last, temp - last);
            dest += temp - last;
    
            strcpy(dest, replace);
            dest += lr;
    
            temp += lp;
            last = temp;
        }
        strcpy(dest, last);
    }
    
    int main()
    {
        char dest[1000];
        str_replace(dest, "abcdefgabcdefgabcdefg", "fg", "----");
        printf("%s\n", dest);
    
        str_replace(dest, "abcdefgabcdefgabcdefg", "ef", "----");
        printf("%s\n", dest);
    
        str_replace(dest, "hello world", "l", "ab");
        printf("%s\n", dest);
        return 0;
    }
    0 0
相关问答

1

回答

关于 java String字符串截取问题

2016-03-23 14:33:00 2344浏览量 回答数 1

1

回答

Java中string类型在内存机制的存储问题

2016-03-20 13:42:33 2195浏览量 回答数 1

2

回答

java怎么把string转换为int

2016-03-20 18:52:16 2887浏览量 回答数 2

1

回答

java前台向后台传入String怎么转换成Date存入数据库中?

2016-03-19 11:22:59 2763浏览量 回答数 1

1

回答

java 中 String 类连接问题

2016-03-18 11:07:43 1598浏览量 回答数 1

1

回答

java中String 和StringBuffer有什么区别

2016-03-13 15:26:59 1541浏览量 回答数 1

2

回答

JAVA 取值问题(Date和String,long转换)

2016-03-13 19:12:16 2252浏览量 回答数 2

2

回答

Java中关于String输出

2016-03-12 18:18:13 1885浏览量 回答数 2

1

回答

Java中如何用string来定义一个类并调用

2016-03-11 13:17:27 1795浏览量 回答数 1

2

回答

Java中String和基本类型包装类为什么是值传递

2016-03-05 14:12:13 2248浏览量 回答数 2
+关注
文章
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载