当前位置: 首页 > news >正文

[1204 寻找子串位置] 解题报告

题目描写叙述 Description

给出字符串a和字符串b,保证b是a的一个子串。请你输出b在a中第一次出现的位置。

输入描写叙述 Input Description

仅一行包括两个字符串a和b

输出描写叙述 Output Description

仅一行一个整数

例子输入 Sample Input

abcd bc

例子输出 Sample Output

2

数据范围及提示 Data Size & Hint

字符串的长度均不超过100

Pascal用户请注意:两个字符串之间可能包括多个空格



#include <stdio.h>

// 寻找子串位置
inline int findSubStrLocation(int *str,int *subStr){
    int *p = str,*q = NULL,*p_move = NULL;  // p指向主串,p_temp为p的滑动指针,q指向子串
    while (*p != '\0') {
        q = subStr;
        p_move = p;
        while (*q != '\0') {
            // 滑动匹配,滑动过程中出现不匹配直接跳出循环,假设一直匹配到最后一个字符则返回位置
            if (*p_move != *q) {
                break;
            }else{
                q++;
                p_move++;
            }
            
            if (*q == '\0') {
                return (int)(p - str + 1);
            }
        }
        p++;
        q = subStr;
    }
    return NULL;
}

int main(){

    int str[100],subStr[100],i = 0;
    char temp = NULL;
    
    while ((temp = getchar()) != ' ') {
        str[i++] = temp;
    }
    str[i] = '\0';
    i = 0;
    
    while ((temp = getchar()) != '\n') {
        if (temp != ' ') {      // 中间多个空格处理
            subStr[i++] = temp;
        }
    }
    subStr[i] = '\0';
    
    printf("%d\n",findSubStrLocation(str,subStr));
    
    return 0;
}






相关文章:

  • PostgreSQL Analyze分区表:主表与子表的统计信息问题
  • UI初级 Label
  • 深入理解C++中的explicitkeyword
  • 触发JVM进行Full GC的情况及应对策略
  • JQuery ajax方法及参数
  • PHPCMS V9模板制作
  • C++ 继承多态
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • iOS边练边学--通知机制和键盘处理小练习
  • PHP CodeBase: 生成N个不重复的随机数
  • 解析stm32的时钟
  • BZOJ 1001 狼抓兔子 (网络流最小割/平面图的对偶图的最短路)
  • Material Design 控件
  • ARCproject中加入非ARC文件,或者非ARC环境中加入ARC文件
  • IOS开发UI篇--IOS动画(Core Animation)总结
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • Angular Elements 及其运作原理
  • Apache的80端口被占用以及访问时报错403
  • canvas 绘制双线技巧
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • Github访问慢解决办法
  • JavaScript DOM 10 - 滚动
  • java取消线程实例
  • Linux编程学习笔记 | Linux IO学习[1] - 文件IO
  • magento 货币换算
  • MYSQL 的 IF 函数
  • Python socket服务器端、客户端传送信息
  • Redis 中的布隆过滤器
  • vue自定义指令实现v-tap插件
  • 编写符合Python风格的对象
  • 技术:超级实用的电脑小技巧
  • 讲清楚之javascript作用域
  • 一天一个设计模式之JS实现——适配器模式
  • 在electron中实现跨域请求,无需更改服务器端设置
  • 正则与JS中的正则
  • 走向全栈之MongoDB的使用
  • ​iOS实时查看App运行日志
  • # 数据结构
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (LeetCode C++)盛最多水的容器
  • (pojstep1.1.2)2654(直叙式模拟)
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (循环依赖问题)学习spring的第九天
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .net core 控制台应用程序读取配置文件app.config
  • .NET delegate 委托 、 Event 事件
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .Net 垃圾回收机制原理(二)
  • .net 设置默认首页
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数