繁体   English   中英

如何解决这个任务? 在字符串中查找子字符串。 C语言

[英]How to solve this task? Find substring in string. C language

我必须编写一个程序,从用户那里检索仅包含字母“A”和“B”的字符串。 该字符串长度为 10 个字符(每个字符必须单独读取)。 当程序发现该字符串中存在序列“ABBA”时,它应该检测并发出信号。

没有数组怎么办? 我认为唯一的方法是制作 10 scanf 和许多 IF 语句。

您可以有 4 个状态:状态 0 正在寻找第一个 A,状态 1 正在寻找第一个 B,状态 2 正在寻找第二个 B,状态 3 正在寻找第二个 A:

int state = 0;
for (int i = 0; i < 10; i ++) {
    char c = getchar();
    if (c == 'A' && (state == 0 || state == 3)) {
        // found match, advance
        state ++;
        continue;
    }
    if (c == 'B' && (state == 1 || state == 2)) {
        // found match, advance
        state ++;
        continue;
    }
    if (state == 4) {
        // finished, we can break
        break;
    }
    // no match, reset
    state = 0;
}
if (state == 4) {
    puts("substring found");
} else {
    puts("substring not found");
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM