回 帖 发 新 帖 刷新版面

主题:输入两个串A和B,判断B是否是A的子串。是就‘yes’,否就‘no’(帮帮忙)

已经有很多朋友给出了很多好的思路,可惜我都没有编出来,很惭愧,只能在出请大家帮帮忙

回复列表 (共8个回复)

沙发

var
  s1,s2:string;
  flag:boolean;
  i,j,k,l1,l2:longint;
begin
  write('big ');
  readln(s1);
  write('small ');
  read(s2);
  l1:=length(s1);l2:=length(s2);
  i:=1;j:=1;
  while (i<=l1)and(j<=l2) do
    begin
      flag:=false;
      while (s2[j]<>s1[i])and(i<=l1) do inc(i);
      if s1[i]=s2[j] then inc(j);
    end;
  if j>l2 then write('true') else write('false');
end.
加分阿

板凳

对于上面这帖,问个问题,那个flag做什么用的?还有一个问题,比如输入1234567 和13579 结果不也对吗这也可以算作子串吗?

3 楼

感谢了

4 楼

Begin
  read(a,b);
  len1:=lenght(a);
  len2:=lenght(b);
  f1:=TRUE
  for i:=1 to len1 do begin
    c:=a[i];f2:=TALSE;  
    for j:=1 to len2 do if c=b[j]then f2:=TRUE;
    if f2=FALSE then f1:=FALSE;
  end;
  writeln(f1);
End.

5 楼

只需将第一个字符串中的每一个字符与第二个字符串相比较就行了

6 楼

fp里不是有一个pos函数吗?用那个不就行了?

7 楼

var a,b:string;
begin
  readln(a);
  readln(b);
  if pos(a,b)>0 then writeln('yes')
                else writeln('no');
end.

8 楼


var 
stri1,stri2:string;
begin
  readln(stri1);
  readln(stri2);
  if pos(stri1,stri)=0 then writeln('no')
                else writeln('yes');
end.

我来回复

您尚未登录,请登录后再回复。点此登录或注册