0%

Delete element of A in B

删除字符串A中属于B的字母

题目描述:

设计一程序,处理字符串A
处理规则:只要B字符串中有的字母,无论大小写,一律从A字符串中删掉

代码实现:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include <stdio.h>
#include <string.h>

void DeleteArr_By_Index(char *arr, int index)
{
int i;
int len = strlen(arr);

for (i = index; i < len -1; i++)
*(arr + i) = *(arr + i + 1);

*(arr+i) = '\0'; // 将最后以为赋值为\0

}

void Del_A_in_B(char *A, char *B)
{
if (A == NULL || B == NULL)
return;

int i = 0 , j = 0;
while (*(A + i) != '\0')
{
// 非字母元素跳过
if ((*(A+i) < 'A' || *(A+i) > 'Z') && (*(A+i) < 'a' || *(A+i) > 'z'))
{
i++;
continue;
}

while (*(B + j) != '\0')
{
// 若A中的元素属于B
if(*(A + i) == *(B + j) || *(A + i) + 32 == *(B + j) || *(A + i) - 32 == *(B + j))
{
DeleteArr_By_Index(A,i);
i--; // 删除元素后 ,索引复位
break;
}
j++;
}

i++;
j = 0;
}
}

int main()
{

char arrA[] = "Hellllo World";
char arrB[] = "L o L";

Del_A_in_B(arrA,arrB);

printf("%s\n", arrA);

return 0;
}

预期结果

He Wrd


运行结果