删除指定字符串中的子串
来源:互联网 发布:小程序域名白名单 编辑:程序博客网 时间:2024/05/19 18:13
问题描述
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。
要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, int sub_str_num,char *result)
【输入】 str:输入的被操作字符串
sub_str:需要查找并删除的特定子字符串
sub_str_num:子字符串的长度
result:所要求的结果
【返回】 删除的子字符串的个数
示例
输入:str = "a1234bc123de12abc123d1234"sub_str = "1234"
输出:result = "abc123de12abc123d"
返回:2
关键点:
在示例中,当主字符串循环到de12的时候,由于和字符串只是12两个字符相同,第3个字符不同,那么这个时候,只能把子字符串中的前两个字符拷贝到目标串中。
代码
#include <stdlib.h>#include <stdio.h>#include <string.h>int delete_sub_str(const char *str,const char *sub_str,int sub_str_len,char *result){ int num=0,k=0;//num记录重复的子串个数,k用来记录result当前的位置int i=0,j=0;//i和j分别为str和sub_str指针const char *p_sub_str=sub_str;//p_sub_str用来还原sub_str到起始位置while(str[i]!='\0'){if(str[i]!=sub_str[j]){ result[k++]=str[i++];}else{const char *temp=sub_str;//此处的循环必须满足两个条件for(;(str[i]==sub_str[j])&&sub_str[j]!='\0';j++){i++;}if(j==sub_str_len){num++;//出现重复子串,num加1}else{//此处是关键//比如说字符串为1234;主字符串如果和子字符串前两个字符相同,但第三个字符不同//那么此时应该退出循环,并且把子字符串的前两个字符拷贝到result中去 for(int m=0;m<j;m++){result[k++]=temp[m];}}//重新让子字符串回到起始位置sub_str=p_sub_str;j=0;}}return num;}int main(){char *a="a1234bc123de12abc123d1234";char *b="1234";char c[100]={0};int sub_str_len=strlen(b);int i=delete_sub_str(a,b,sub_str_len,c);printf("Total deleted sub_str is %d\n",i);printf("%s\n",c);return 0;}
其他变形
题目一:写一个字符串替换函数,如函数名为 StrReplace(char* strSrc, char* strFind, char* strReplace),strSrc为原字符串,strFind是待替换的字符串,strReplace为替换字符串。
0 0
- 删除指定字符串中的子串
- 删除字符串中的指定子串
- C++ 删除字符串中的指定子字符串
- C:deleteSubString 删除源字符串中的指定子串
- C语言——删除字符串中的指定子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 删除字符串中的子串
- 从字符串中删除指定子串或指定元素
- 替换字符串中的指定子串
- 删除字符串中的子字符串
- 删除字符串中的给定子串
- <记录>删除字符串中的子串
- 开放寻址法
- Android Studio安装与gradle的关系
- leetcode 242: Valid Anagram
- [深入理解Android卷一全文-第六章]深入理解Binder
- uva12661 Dijkstra
- 删除指定字符串中的子串
- STL中的set容器的一点总结
- storyboard之 prepareForSegue:sender:
- UILabel如何设置成透明
- bzoj1006【hnoi2008】神奇的国度
- vector用法
- 搜索引擎整体结构图以及描述
- 用python加cPAMIE加pyinstaller为我柱哥点赞
- Remove Element