文章目录
查找两个字符串a,b中的最长公共子串
遍历最短的字符串,看max中是否包含min的部分
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Scanner sc=new Scanner(System.in);
String s1=sc.nextLine();
String s2=sc.nextLine();
String max=s1.length()>=s2.length()?s1:s2;
String min=s1.length()>=s2.length()?s2:s1;
int len=min.length();
String s="";
int l=0;
for(int i=0;i<len;i++){
for(int j=i+1;j<=len;j++){
if(max.contains(min.substring(i,j))&&j-i>l){
l=j-i;
s=min.substring(i,j);
}
}
}
System.out.println(s);
}
}
洗牌
import java.util.*;
public class Main{
public static void main(String[]args){
Scanner sc=new Scanner(System.in);
int group=sc.nextInt();
for(int i=0;i<group;i++){
int n=sc.nextInt();
int k=sc.nextInt();
ArrayList<Integer> cards = new ArrayList<>();
ArrayList<Integer> left = new ArrayList<>();
ArrayList<Integer> right = new ArrayList<>();
for(int j=0;j<2*n;j++){
cards.add(sc.nextInt());
}
// Collections.reverse(cards);
for(int x=0;x<k;x++){
left.clear();
right.clear();
for(int j=0;j<n;j++){
left.add(cards.get(j));
}
for(int j=n;j<2*n;j++){
right.add(cards.get(j));
}
cards.clear();
for(int j=0;j<n;j++){
cards.add(left.get(j));
cards.add(right.get(j));
}
}
// Collections.reverse(cards);// 再把牌组顺序反转为正常顺序
for(int j=0;j<cards.size();j++){
System.out.print(cards.get(j));
if (j != cards.size() - 1)
System.out.print(" ");
}
System.out.println();
}
}
}