这两个代码有区别吗,第一个可以ac,第二个却显示错误答案(语言-c++)

img

     21.6.6
     #include<bits/stdc++.h>
    using namespace std:
    l:
   stringss1,s2
   INT MAIN()
  getline(cin,
  getline(cin,s1
  getline(cin,s2)//输入
 n=s.find(s1)://s1在最左边的位置
 a=s.rfind(s2);//s2在最右边的位置
 l=s1.length0://s1的长度
 if(a<nlla==-11ln—-1
 Cout-1://判断是否存在
 else couta-n-l;//输出距离
 return 0:
 1
  1. img

img

 描述
 有三个字符串SS1其度不超过300S1S2的长度不超过10.想检测S1S2是否同时在S
 中出现,且S1位于S2的左边,并在S中互不交叉(即,S1的右边界点在S2的左边界点的左侧).计算满足
 上述条件的最大跨距(即,最大间隔距离:最右边的S2的起始点与最左边的S1的终止点之间的字符数目).
 如果没有满足条件的S1S2存在,则输出-1.
 例如,S="abcd123ab888efghij45ef67k"s1="ab"S2="ef",其中,S1在S中出现了2次,S2也在
 S中出现了2次,最大跨距为:18.
 输入
 三个串:S,S1S2,其间以逗号间隔(注意,S,S1S2中均不含逗号和空格);
 输出
 S1S2在S最大跨距:若在S中没有满足条件的S1S2,则输出-1.
 样例输入
  abcd123ab888efghij45ef67kl,abef
 样例输出

没区别呀

有区别,注意 int 和 unsigned int 运算结果是unsigned int