java实现字符串移位包含问题

对于一个字符串来说,定义一次循环移位操作为:将字符串的第一个字符移动到末尾形成新的字符串。

给定两个字符串 s_1s1​ 和 s_2s2​,要求判定其中一个字符串是否是另一字符串通过若干次循环移位后的新字符串的子串。例如CDAA是由AABCD两次移位后产生的新串BCDAA的子串,而ABCDACBD则不能通过多次移位来得到其中一个字符串是新串的子串。

通过的代码:

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
       Scanner scanner=new Scanner(System.in);
        String a=scanner.next();
        String b=scanner.next();
        if(a.length()>b.length()) {
            StringBuilder sb = new StringBuilder(a);
            int count=0;
            for (int i = 0; i < a.length(); i++) {
                char ch = sb.charAt(0);
                sb.deleteCharAt(0);
                sb.append(ch);
                String str2 = sb.toString();
                if(str2.contains(b)) {
                    count++;
                    break;
                }
            }
            if(count==0) {
                System.out.println("false");
            }else {
                System.out.println("true");
            }
        }else if(a.length()<b.length()) {
            String c=a;
            String d=b;
            StringBuilder sb = new StringBuilder(d);
            int count=0;
            for (int i = 0; i < c.length(); i++) {
                char ch = sb.charAt(0);
                sb.deleteCharAt(0);
                sb.append(ch);
                String str2 = sb.toString();
                if(str2.contains(c)) {
                    count++;
                    break;
                }
            }
            if(count==0) {
                System.out.println("false");
            }else {
                System.out.println("true");
            }
        }else if(a.length()==b.length()){
            if(a.equals(b)) {
                System.out.println("true");
            }else {
                System.out.println("false");
            }
        }

    }
}


版权声明:本文为qq_44735504原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。