You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言判断第二个整数序列是否为第一个的连续子串

C语言实现整数序列连续子串判断

需求:给定两个整数序列,判断第二个序列是否为第一个序列的连续子串(子串由第一个序列的连续元素构成)。

你提供的参考代码存在逻辑缺陷,仅能判断两个序列是否存在相同元素,无法校验连续、顺序完全匹配的子串要求,修正后的实现代码如下:

#include <stdio.h>
int main() {
    int x[100], y[100], i, j, dim1, dim2, is_sub = 0;
    // 输入第一个序列
    scanf("%d", &dim1);
    for(i = 0; i < dim1; i++) {
        scanf("%d", &x[i]);
    }
    // 输入第二个序列
    scanf("%d", &dim2);
    for(j = 0; j < dim2; j++) {
        scanf("%d", &y[j]);
    }
    // 边界判断:子序列长度大于原序列直接返回不匹配
    if(dim1 < dim2) {
        printf("no");
        return 0;
    }
    // 遍历所有可能的起始位置
    for(i = 0; i <= dim1 - dim2; i++) {
        int match = 1;
        for(j = 0; j < dim2; j++) {
            if(x[i + j] != y[j]) {
                match = 0;
                break;
            }
        }
        if(match) {
            is_sub = 1;
            break;
        }
    }
    if(is_sub) {
        printf("yes");
    } else {
        printf("no");
    }
    return 0;
}

实现逻辑说明:

  • 边界校验优先处理,避免无效遍历
  • 外层循环控制原序列的子串起始位置,最大起始位置为dim1 - dim2,防止数组越界
  • 内层循环逐位比对子串元素,只要出现不匹配就终止当前起始位置的校验
  • 只要存在一个完全匹配的子串就直接终止遍历,提升运行效率

内容的提问来源于stack exchange,提问作者my_name

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 11:54:02