`
kennethf6986
  • 浏览: 69007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

面试题目之删除字符串

阅读更多
问题描述:
在给定字符串中查找所有特定子串并删除,如果没有找到相应子串,则不作任何操作。

要求实现函数:
int delete_sub_str(const char *str, const char *sub_str, char *result_str)

【输入】 str:输入的被操作字符串

         sub_str:需要查找并删除的特定子字符串

【输出】 result_str:在str字符串中删除所有sub_str子字符串后的结果

【返回】 删除的子字符串的个数

#include "stdio.h"
#include "conio.h"
#include "string.h"
#include   <stdlib.h>  

void main()
{
	int delSubStr(char * src,char * sub,char * result);

	char *srcstr = "abcdefgde";
	char *subp = "de"; 
	char resp[100];
	int count;

	count =  delSubStr(srcstr, subp, resp);

	printf("删除的子串的个数: %d\n", count);
	printf("原来的字符串    : %s\n", srcstr);
	printf("删除后的字符串:: %s\n", resp);

}

/*删除字串函数,在src中删除sub子串,并将结果保存在result字符串中*/
int delSubStr(char * src,char * sub,char * result)
{
	char *src_p = src;
	char *sub_p = sub;
	char *res_p = result;

	int count = 0; //记录包含子串的个数
	int sub_len = strlen(sub); //记录子串的长度
	char *temp; //临时保存子串的副本

	temp = (char*)malloc(sub_len + 1);
	memset(temp,'\0',sub_len+1);

	while (*src_p)
	{
		memcpy(temp,src_p, sub_len);
		//printf("temp--sub:%s--%s:\n", temp,sub_p);
		/*原串中包含与sub完全匹配的子串*/
		if( !strcmp(temp, sub_p) )
		{
			count++;
			src_p+=sub_len;
		}else
		{
			*res_p++ = *src_p++;
		}
	}
	*res_p='\0';
	free(temp);
	return count;
}
分享到:
评论

相关推荐

    Code_笔试题_字符串压缩_

    标题中的“Code_笔试题_字符串压缩_”指的是一个与编程相关的笔试题目,重点在于实现字符串的压缩功能。这类问题通常出现在技术面试或招聘过程的笔试试题中,旨在考察应聘者的编程能力和对数据结构的理解。 描述中...

    java-leetcode面试题解Stack之第1047题删除字符串中的所有相邻重复项-题解.zip

    在本压缩包中,我们关注的是一个与Java编程和LeetCode相关的面试问题,具体是第1047题,题目要求删除字符串中的所有相邻重复项。这个问题主要涉及到字符串处理和栈(Stack)数据结构的应用。下面我们将深入探讨这个...

    python-leetcode面试题解之第43题字符串相乘-题解.zip

    然后初始化`dp`表,逐位计算两个字符串的乘积,最后将结果转换为字符串并去除前导零。 这个解法的时间复杂度是O(m * n),其中m和n分别是两个输入字符串的长度,空间复杂度也是O(m * n)。在实际面试中,对于这种...

    oracle数据库面试题目汇总.pdf

    本资源摘要信息将涵盖 Oracle 数据库面试题目汇总的关键知识点,涵盖字符串操作函数、事务概念、查询系统时间、触发器的作用、数字函数、关系数据库系统与文件数据库系统的区别、触发器和存储过程的概念等方面。...

    python-leetcode面试题解之第186题反转字符串中的单词II-题解.zip

    在本压缩包中,我们关注的是一个Python编程与算法相关的面试题目——LeetCode的第186题,题目名为“反转字符串中的单词II”。这道题主要考察的是字符串操作和数组处理技巧,对于Python程序员来说,是提升技能和准备...

    python面试题目-python-python经典面试题目-Python语言的基本概念-常用的功能和特性-编程范式-面试题目

    - 使用`format()`函数或f-string进行字符串格式化,如`"Hello, {}!".format("world")`或`f"Hello, {name}!"`。 14. **面向对象编程(OOP)**: - OOP基于类和对象,主要特征包括封装、继承和多态。 - `class`...

    java面试题目之API基础问答题

    - `trim()`:删除字符串首尾的空白字符。 - `valueOf(char[] data)`:将字符数组转换为字符串。 #### 重写clone方法的步骤 在Java中,通过实现`Cloneable`接口并重写`clone()`方法,可以创建对象的深拷贝或浅拷贝...

    java面试题目

    【Java面试题目】是华为2013年针对校招生进行的技术考核,涵盖了多项编程挑战。以下是这些题目涉及的关键知识点: 1. **字符串操作**: - 大写字母反序输出:这需要理解字符串的基本操作,如遍历字符串、大小写...

    华为-华为od题库练习题之截取字符串.zip

    本题库是针对华为OD题目的练习资源,重点在于“截取字符串”这一编程技巧。下面我们将详细探讨这一知识点。 字符串截取是编程中的基本操作,无论是在Java、Python、C++还是其他编程语言中,都有相应的函数或方法来...

    oracle数据库面试题目集锦

    - `TRIM()`:去除字符串两侧的空格,也可指定特定字符进行裁剪。 - `SUBSTR()`:返回字符串的一部分。 - `INSTR(string, substring)`:返回子串在字符串中首次出现的位置,找不到则返回0。 - `REPLACE(original_...

    java面试题-leetcode题解之第8题字符串转换整数atoi.zip

    1. **去除前导空格**:使用`String.trim()`方法去掉字符串的前导和尾部空格。 2. **检查正负符号**:检查第一个字符是否为'+'或'-',并根据情况设置一个标志位。 3. **转换数字部分**:从第二个字符(或第一个字符...

    java-leetcode题解之第415题字符串相加.zip

    在本压缩包“java-leetcode题解之第415题字符串相加.zip”中,包含的是关于LeetCode第415题“字符串相加”(Add Strings)的Java解决方案。这道题目属于计算机编程领域,特别是Java语言的学习与算法实践。LeetCode是...

    java-leetcode面试题解哈希表第387题字符串中的第一个唯一字符-题解.zip

    这个题目的解法展示了哈希表在解决查找和计数问题时的强大之处,也体现了在面试中如何运用数据结构优化算法的重要性。对于求职者来说,熟练掌握各种数据结构和算法,尤其是哈希表,能够显著提升面试成功率。

    数据结构 面试 题目

    它在处理数组、字符串等数据集合时特别有用,能够简化代码并提高程序的可读性和可维护性。 7. **题目十**:“链表的描述” - 链表是由一系列节点组成的数据结构,每个节点包含数据部分和指向下一个节点的指针。...

    c++-c++编程基础之leetcode题解第43题字符串相乘.zip

    第43题是关于字符串相乘的题目,这涉及到字符串处理和数学运算。在这个问题中,我们需要实现一个函数,将两个表示整数的非负字符串相乘,并返回它们的乘积作为字符串。 首先,我们来看一下这个问题的基本概念。字符...

    C#面试题目.doc

    以下是对给定的C#面试题目的详细解答: 1. **斐波那契数列**:题目要求使用递归算法计算斐波那契数列的第30位数。递归函数`Foo`通过检查输入的索引值来决定返回值,如果索引小于等于0,返回0;如果索引在1到2之间,...

    java 最新面试题目``

    【Java最新面试题目解析】 1、面向对象的特征: 面向对象编程(OOP)的核心特征包括抽象、继承、封装和多态性。 - 抽象:抽象是将复杂问题简化的过程,关注对象的关键特性和行为,忽略不重要的细节。抽象分为过程...

    oracle数据库面试题目汇总.docx

    Oracle 数据库面试题目涉及到多个方面的知识点,以下是这些知识点的详细说明: 1. 字符串操作函数: - ASCII(): 返回字符串第一个字符的 ASCII 码值。 - CHR(): 将 ASCII 码转换为对应的字符,如果输入不合法,...

    oracle数据库面试题目汇总

    例如ASCII()用于获取字符的ASCII码,CHR()用于将ASCII码转换为字符,CONCAT()用于连接两个字符串,LOWER()和UPPER()分别用于转换字符串为小写和大写,LTRIM()、RTRIM()和TRIM()用于去除字符串两侧的空格,...

    php初级程序员面试题目

    - 字符串函数:了解strlen、substr、strpos、str_replace、explode等函数的用法。 - 数组函数:掌握array_push、array_pop、array_merge、array_slice、foreach循环等处理数组的方法。 3. **文件与目录操作**: ...

Global site tag (gtag.js) - Google Analytics