Wikioi 天梯 寻找子串位置(1204)

这道wikioi天梯题目要求找出字符串a中子串b首次出现的位置。给定两个字符串a和b,长度不超过100,程序应返回b在a中首次出现的索引。Pascal编程中可用pos函数解决此问题,注意处理字符串间可能存在多个空格的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

仅一行一个整数

abcd bc

2

字符串的长度均不超过100

Pascal用户请注意:两个字符串之间可能包含多个空格(作者PS:最多含有两个空格)




本题曾经没说字串间多个空格的事,所以笔者被坑过,所以本题就不吐槽了~~

所用知识:

pos(s,st)返回字串s在字串st中首次出现的位置,位置按首个匹配字符计(例如pos('asd','asssdasddd')=6),若s不是st的子串,返回值为零;

length(st)返回字符串st的长度;

copy(st,n,x)返回字符串st从第n位开始的连续x个字符构成的子串(字串);

delete(st,n,x)操作:将字符串st从第n位开始的连续x个字符删掉。


算法描述:

读入一整行为一个字符串,以空格为标志将该串分割成需要的两个字符串(具体方法见代码),输出pos(s,st)。这里在删除空格的时候由于不止一个,应该用while实现,但笔者剧透,数据最多有两个空格间隔~~



Program str;
Var
	s,st:string;
Begin
	readln(st);
	s:=copy(st,pos(' ',st)+1,length(st)-pos(' ',st));
	delete(s,pos(' ',s),1);
	delete(st,pos(' ',st),length(st)-pos(' ',st)+1);
	writeln(pos(s,st));
End.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值