C 检查一个字母出现在另一个字母之前的所有情况

Scu*_*der 1 c letter find-occurrences

所以我有一个由 N 个字母“a”或“b”组成的字符串 S。如果 A 的所有出现都在 b 的所有出现之前,则应返回 1,否则返回 0。

B 不需要出现在 S 中,A 不需要出现在 S 中

例如

S='aabbb' returns 1 
S = 'ba' returns 0
S = 'aaa' returns 1
S= 'b' returns 1
Run Code Online (Sandbox Code Playgroud)

所以我的方法是在字符串上使用 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");
    }

}
Run Code Online (Sandbox Code Playgroud)

输出是a1a1b0b0b0a1 1So..它部分检测 a 是否在 b 之前,但不是完全正确的方式。

Kam*_*Cuk 7

我有一个由 N 个字母 'a' 或 'b' 组成的字符串 S

如果 A 的所有出现都在 b 的所有出现之前,则应返回 1,否则返回 0。

所以字符串里面不允许有序列ba。所以就:

if (strstr(newstr, "ba") == NULL) { printf("1\n"); } else { printf("0\n"); }
Run Code Online (Sandbox Code Playgroud)

要不就:

printf("%d\n", !strstr(newstr, "ba"));
Run Code Online (Sandbox Code Playgroud)