删除字符串中的特定字符
- 题目: 删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。
- 刚拿到这道题的时候,有点懵,因为字符串都忘记了
后来试着试着发现几个要点:
- 字符串的长度可以用strlen()这个函数,不过需要调用#include <string.h>这个函数。
- 函数传递可以选择指着传递其首位的位置;
- str[···]='\0';可以表示结束这个字符串后面的所有内容;(在下面代码中如果不这么做,无法清空后面的数组内容)
基本步骤是:
- 利用hash数组进行标记。对需要进行删除的字符通过char和int互相转化的性质,进行锁定,找到需要删除的字符设定为1;
- 利用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;
}
小白的随笔,有很多不精确的用语,希望各位多多指正。