题目:删除一个字符串中的指定字母,如:字符串 “aca”,删除其中的 a 字母。
C实现:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
char* DeleteCharacters(char *str, char *s) {
if (str == NULL&&s == NULL) {
return str;
}
int Cur = 0;
int Hash[256] = { 0 };
for (int j = 0; j < strlen(s); j++) {
Hash[s[j]] = 1;
}
for (int i = 0; i < strlen(str); i++) {
if (!Hash[str[i]]) {
str[Cur++] = str[i];
}
}
str[Cur] = '\0';
return str;
}
int main() {
char s[2] = "a";
char str[6] = "ababc";
char newstr[6];
printf("输入的字符串为:");
for (int i = 0; i < strlen(str); i++) {
printf("%c",str[i]);
}
printf("\n");
printf("要删除的指定字母为:");
for (int i = 0; i < strlen(s); i++) {
printf("%c", s[i]);
}
printf("\n");
printf("删除后的字符串为:");
strcpy(newstr, DeleteCharacters(str, s));
for (int i = 0; i < strlen(newstr); i++) {
printf("%c", newstr[i]);
}
printf("\n");
return 0;
}
C运行结果:
C++实现:
#define _CRT_SECURE_NO_WARNINGS
#include< iostream >
using namespace std;
char* DeleteCharacters(char *str, char *s) {
if (str == NULL&&s == NULL) {
return str;
}
int Cur = 0;
int Hash[256] = { 0 };
for (int j = 0; j < strlen(s); j++) {
Hash[s[j]] = 1;
}
for (int i = 0; i < strlen(str); i++) {
if (!Hash[str[i]]) {
str[Cur++] = str[i];
}
}
str[Cur] = '\0';
return str;
}
int main() {
char s[3] = "ab";
char str[6] = "ababc";
cout << "输入的字符串为:";
for (int i = 0; i < strlen(str); i++) {
cout << str[i];
}
cout << endl;
cout << "要删除的指定字母为:";
for (int i = 0; i < strlen(s); i++) {
cout << s[i];
}
cout << endl;
cout << "删除后的字符串为:" << DeleteCharacters(str, s) << endl;
return 0;
}
C++运行结果: