删除字符串中的特定字符


  • 题目: 删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
  • 刚拿到这道题的时候,有点懵,因为字符串都忘记了

后来试着试着发现几个要点:

  • 字符串的长度可以用strlen()这个函数,不过需要调用#include <string.h>这个函数。
  • 函数传递可以选择指着传递其首位的位置;
  • str[···]='\0';可以表示结束这个字符串后面的所有内容;(在下面代码中如果不这么做,无法清空后面的数组内容)

基本步骤是:

  1. 利用hash数组进行标记。对需要进行删除的字符通过char和int互相转化的性质,进行锁定,找到需要删除的字符设定为1;
  2. 利用hash这个标记进行数组重装,并且利用str[···]='\0'清空后面的内容。
#include <stdio.h> 
#include <string.h>
char* deletecharacter(char *str,char * charset)
{
	int hash[256]={0}; 
	int i;
	for(i=0;i<strlen(charset);i++)
		hash[charset[i]]=1;
	int currentIndex=0;
	for(i=0;i<strlen(str);i++)
	{
		if(!hash[str[i]])
			str[currentIndex++]=str[i];		
	}
	str[currentIndex] = '\0'; //结束字符 
	return str; 
} 
int main()
{
	char s[3]="ab";
	char s2[10]="abcabcabc";
	printf("%s",deletecharacter(s2,s));
	return 0;
}

小白的随笔,有很多不精确的用语,希望各位多多指正。