一、需求描述
输入一个长字符串和一个短字符串,编写程序从长字符串中将在短字符串出现过的字符删除掉。
例如,长字符串为“1234abcd”,短字符串为“3a”,那么经程序处理之后的字符串为“124bcd”;又如,长字符串为“good bye”,短字符串为“obh”,那么经程序处理之后的字符串为“gd ye”。
二、算法设计
我们可以通过将长字符串中的字符逐个与短字符串中的字符相比较来判断是否应该将某个字符从长字符串中删除掉。
即如果长字符串为“1234abcd”,短字符串为“2a”,那么先将长字符串中的第一个字符“1”分别与短字符串中的“2”和“a”相比较,发现都不相等,于是将字符“1”加入到新的字符串中;接着将长字符串中的第二个字符“2”分别与短字符串中的“2”和“a”相比较,发现有相等的,于是不将字符“2”加入到新的字符串中;如此循环执行,直到长字符串中的所有字符都比较完成。
三、特殊流程考虑
在编写程序的过程中,我们要对输入的字符串的长度及格式多做考虑,如:
1.如果输入的两个字符串之一含有中文字符,那么程序直接返回而不执行后续流程。
2.如果输入的短字符串的长度大于了长字符串的长度,那么程序直接返回而不执行后续流程。
四、程序代码
五、程序测试
我们将编写好的程序“RemoveChars.c”上传到Linux机器,并使用“gcc -g -o RemoveCharsRemoveChars.c”命令对该程序进行编译,生成“RemoveChars”文件。下面对程序进行详细的测试。
1.输入长字符串为“1234abcd”,短字符串为“2a”时,程序运行情况如下:
Please input the long string:
1234abcd
InputLongStr=1234abcd
Please input the short string:
2a
InputShortStr=2a
Remove chars of 2a from 1234abcd, the new str is: 134bcd
2.输入长字符串为“Happy dog!”,短字符串为“ao”时,程序运行情况如下:
Please input the long string:
Happy dog!
InputLongStr=Happy dog!
Please input the short string:
ao
InputShortStr=ao
Remove chars of ao from Happy dog!, the new str is: Hppy dg!
3.输入长字符串为“我们123”,短字符串为“345”时,程序运行情况如下:
Please input the long string:
我们123
InputLongStr=我们123
Please input the short string:
345
InputShortStr=345
我们123 has Chinese character, please check!
4.输入长字符串为“12345”,短字符串为“234567”时,程序运行情况如下:
Please input the long string:
12345
InputLongStr=12345
Please input the short string:
234567
InputShortStr=234567
234567 is longer than 12345, please check!
5.输入长字符串为“abcdsf”,短字符串为“af2”时,程序运行情况如下:
Please input the long string:
abcdsf
InputLongStr=abcdsf
Please input the short string:
af2
InputShortStr=af2
Remove chars of af2 from abcdsf, the new str is: bcds
六、需求扩展
基于本文中的需求和程序,我们可考虑对需求进行以下扩展:
1.如果短字符串中的某个字符在长字符串中存在,那么在长字符串的对应位置用空格占位,而不是直接将该字符从长字符串中删除。
2.不限制输入字符串中不能出现中文字符,即如果长字符串为“我们123”,短字符串为“我1”,那么经程序处理之后的字符串为“们23”。