C 检查所有出现的一个字母都出现在另一个字母之前
C Check all occurrences of a letter appear before another letter
所以我有一个由N个字母'a'或'b'组成的字符串S。
如果 A 的所有出现都在 b 的所有出现之前,这应该 return 1 否则 return 0。
B 不需要出现在 S 中,A 也不需要出现在 S 中
例如
S='aabbb' returns 1
S = 'ba' returns 0
S = 'aaa' returns 1
S= 'b' returns 1
所以我的方法是在字符串上使用 for 循环并检查 b 是否出现在 a 之前,就像这样:
char newstr[10] = "aabbba"; //should return 0
int len = strlen(newstr);
for (int i = 0; i < len+1; i++) {
printf("%c", newstr[i]);
if (newstr[i] < 'b') {
printf("1");
}
else {
printf("0");
}
}
输出是 a1a1b0b0b0a1 1
所以..它正在部分检测 a 是否在 b 之前但不是完全正确的方式。
您的代码只是检测 a
,而没有检查与 b
的关系。
条件“如果 A 的所有出现都在 b 的所有出现之前,则这应该 return 1,否则 return 0。”可以说是“这应该 return 0 如果 some A 的出现是 after some 出现 b 和 return 1 否则。".
一个示例实现是:
char newstr[10] = "aabbba";
int b_found = 0;
int result = 1;
for (int i = 0; newstr[i] != '[=10=]'; i++) {
if (newstr[i] == 'b') {
b_found = 1;
} else if(b_found && newstr[i] == 'a') {
/* 'a' is found after 'b' */
result = 0;
}
}
printf("%d", result);
i have a string S consisting of N letters 'a' or 'b'
should return 1 if all occurrences of A are before all occurrences of b and return 0 otherwise.
所以字符串里面不允许有序列ba
。所以只是:
if (strstr(newstr, "ba") == NULL) { printf("1\n"); } else { printf("0\n"); }
或者只是:
printf("%d\n", !strstr(newstr, "ba"));
所以我有一个由N个字母'a'或'b'组成的字符串S。 如果 A 的所有出现都在 b 的所有出现之前,这应该 return 1 否则 return 0。
B 不需要出现在 S 中,A 也不需要出现在 S 中
例如
S='aabbb' returns 1
S = 'ba' returns 0
S = 'aaa' returns 1
S= 'b' returns 1
所以我的方法是在字符串上使用 for 循环并检查 b 是否出现在 a 之前,就像这样:
char newstr[10] = "aabbba"; //should return 0
int len = strlen(newstr);
for (int i = 0; i < len+1; i++) {
printf("%c", newstr[i]);
if (newstr[i] < 'b') {
printf("1");
}
else {
printf("0");
}
}
输出是 a1a1b0b0b0a1 1
所以..它正在部分检测 a 是否在 b 之前但不是完全正确的方式。
您的代码只是检测 a
,而没有检查与 b
的关系。
条件“如果 A 的所有出现都在 b 的所有出现之前,则这应该 return 1,否则 return 0。”可以说是“这应该 return 0 如果 some A 的出现是 after some 出现 b 和 return 1 否则。".
一个示例实现是:
char newstr[10] = "aabbba";
int b_found = 0;
int result = 1;
for (int i = 0; newstr[i] != '[=10=]'; i++) {
if (newstr[i] == 'b') {
b_found = 1;
} else if(b_found && newstr[i] == 'a') {
/* 'a' is found after 'b' */
result = 0;
}
}
printf("%d", result);
i have a string S consisting of N letters 'a' or 'b'
should return 1 if all occurrences of A are before all occurrences of b and return 0 otherwise.
所以字符串里面不允许有序列ba
。所以只是:
if (strstr(newstr, "ba") == NULL) { printf("1\n"); } else { printf("0\n"); }
或者只是:
printf("%d\n", !strstr(newstr, "ba"));