【发布时间】:2019-06-02 12:58:02
【问题描述】:
所以给定的任务是创建一个函数来检查任何字符串 if
- 包括所有 5 个字母“a”、“b”、“c”、“d”和“e”(在任何 序列)和
- 字符串“abcde”是给定字符串的子字符串。 如果 1 成立(但 2 不成立),则返回 1。 如果 1 和 2 都成立,则返回 2。 否则,返回 0。
例子:
checkabcde(“someaxbxcxdxemm”) -> 1
checkabcde(“someOtherValue”) -> 0
checkabcde(“xyabcdeping”) -> 2
checkabcde(“someaxuxdxlxammabcde”) -> 2
在我的方法中,我已经能够发现子字符串是“abcde”,但无法确定该字符串是否包含“a”、“b”、“c”、“d”、“e”序列
int checkabcde(char str[]) {
char str2[] = {
'a',
'b',
'c',
'd',
'e'
};
char str3[5]; //to be filled with elements from str2 when found inconsecutive order
int i, z, x, f;
z = 0; //position for str3
f = 0; //flag for similarity comparison of str2 and str3
for (i = 0; i < strlen(str); i++) {
for (x = 0; x < strlen(str2); x++) {
if (str[i] == str2[x]) {
if ((str[i] == 'a') && (str[i + 1] == 'b') && (str[i + 2] == 'c') && (str[i + 3] == 'd') && (str[i + 4] == 'e')) {
return 2;
} else {
if (str3[z] != str[z - 1]) {
str3[z] = str2[x];
z++;
}
}
}
}
}
for (i = 0; i < 5; i++) {
for (x = 0; x < 5; x++) {
if (str2[i] == str3[x]) {
f++;
}
}
}
if (f == 5) {
return 1;
} else if (f1 == 0) {
return 0;
}
}
编辑:不允许使用指针
【问题讨论】:
-
迭代和计数字符?对字母长度进行计数,并为遇到的每个字符增加计数。然后检查感兴趣的。然后通过删除不需要的计数器来优化它...
-
你可以使用
strchr和strstr吗?