-
描述
-
最近zyc遇到了一个很棘手的问题:判断亲和串,以前判断亲和串的时候直接可以看出来,但现在不同了,现在给出的两字符串都非常的大,看的zyc头都晕了。于是zyc希望大家能帮他想一个办法来快速判断亲和串。亲和串定义:给定两个字符串s1和s2,如果能通过s1循环移动,使s2包含在s1中,那么我们就说s2是s1的亲和串。
-
输入
- 本题有多组测试数据,每组数据的第一行包含输入字符串s1,第二行包含输入字符串s2,s1与s2的长度均小于100000。 输出
- 如果s2是s1的亲和串,则输出"yes",反之,输出"no"。每组测试的输出占一行。 样例输入
-
AABCD CDAA ASD ASDF
样例输出
-
yes no
来源
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main{//AC,312MS public static void main(String[] args) { BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String r1,r2; try { while(true){ r1=bf.readLine(); int len1=r1.length(); if(len1==0) break; r2=bf.readLine(); if(len1<r2.length()) System.out.println("no"); else{ r1=(r1+r1).replace(r2,"");//用index会超时 if(r1.length()==2*len1){ System.out.println("no"); } else System.out.println("yes"); } } } catch (Exception e) { e.printStackTrace(); } } }
import java.io.BufferedReader; import java.io.InputStreamReader; public class Main{//超时,index和replace相比就那么费时间吗?郁闷 public static void main(String[] args) { BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); String r1,r2; try { while(true){ r1=bf.readLine(); int len1=r1.length(); if(len1==0) break; r2=bf.readLine(); if(len1<r2.length()) System.out.println("no"); else if((r1+r1).indexOf(r2)!=-1) System.out.println("yes"); else System.out.println("no"); } } catch (Exception e) { e.printStackTrace(); } } }
亲和串_nyoj_327(字符串).java
最新推荐文章于 2022-04-07 22:00:15 发布