hrbust 2384 相同的不相同的字符串

2018-07-03 01:02:37来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

Description

研究证明,汉的字阅读序顺是不会影响你明白这句话的意思的。

但是如果顺序差的太多也是会影响的,比如汉阅读顺的序字你就看不懂什么意思了。

那么多少算多呢?科学家芦苇给出证明,当两个字符串中,如果A中的每一个字符的位置和在B中的同样的字符的位置的距离绝对值小于m,并且一一对应,那么就不会影响到阅读顺序。

也就是说如果把B重排可以得到A,那么B中的每一个字符的位置离A中的对应位置应小于等于m。

对于每一组字符串,判断B字符串还能不能读出A的意思。

Input

第一行一个t t<=7 代表数据组数

对于每一组,第一行一个m,意义如题意。 m <= 100

第二行一个字符串A len(A) <= 100000。

第二行一个字符串B len(A) == len(B)。

字符串都是英文小写字母。

Output

对于每一组输出一行yes或no代表B能不能读出A的意思。

Sample Input

2

0

ab

ba

1

ab

ba

Sample Output

no

yes

Source
“科林明伦杯”计算机学院2018年程序设计竞赛

解题思路

 

 

 

 

 

package hrbust;
import java.util.*;
import java.math.*;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int t=in.nextInt();
while(t>0) {
int m=in.nextInt();
String A=in.next();
String B=in.next();
int x=0,flag=0;
char ji[]=new char[100005];
for(int i=0;i<A.length();i++) {
int y=x;
while((ji[y]==1||A.charAt(i)!=B.charAt(y)&&y<=i+m&&y<B.length())) {
y++;
}
if(y==B.length()||y>i+m) {
flag=1;
break;
}
ji[y]=1;
while(ji[x]==1)x++;
}
if(flag==0) System.out.println("yes");
else System.out.println("no");
t--;
}
}
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:简单的验证码识别之Tess4j

下一篇:全面认识Docker和基本指令