首页 > 试题广场 >

字符串旋转

[编程题]字符串旋转
  • 热度指数:7083 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
字符串旋转:
给定两字符串A和B,如果能将A从中间某个位置分割为左右两部分字符串(都不为空串),并将左边的字符串移动到右边字符串后面组成新的字符串可以变为字符串B时返回true。
例如:如果A=‘youzan’,B=‘zanyou’,A按‘you’‘zan’切割换位后得到‘zanyou’和B相同返回true。

输入描述:
2个不为空的字符串(说明:输入一个字符串以英文分号";"分割为2个字符串)
例如:youzan;zanyou 即为A=‘youzan’,B=‘zanyou’


输出描述:
输出true或false(表示是否能按要求匹配两个字符串)
示例1

输入

youzan;zanyou

输出

true
示例2

输入

youzan;zyouan

输出

false
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String scanner= in.nextLine();
        String [] strArray=  scanner.split(";");
        String str1=strArray[0];
        String str2=strArray[1];
        //计数器
        int count =0;
        for(int i=1;i<str1.length();i++){
            StringBuilder strBuilder =new StringBuilder();
            String tar1= str1.substring(0,i);
            String tar2 =str1.substring(i);
            String result=  strBuilder.append(tar2).append(tar1).toString();
            if(result.equals(str2)){
                count++;
            }
        }
        if(count>0){
            System.out.print("true");
        }else{
            System.out.print("false");
        }

    }
}
发表于 2025-04-08 10:58:51 回复(0)
/*
我的想法是将字符串A循环移位,每移动一次,就和字符串B进行比较,知道与字符串相等或者字符串A移动结束
*/
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        String[] strarr = input.nextLine().split(";");
        String str1 = strarr[0];
        String str2 = strarr[1];

        //将str1进行移位
        for(int i = 0;i<str1.length();i++){
            str1 = str1.substring(1)+String.valueOf(str1.charAt(0));
            if(str1.equals(str2)){
                System.out.println(true);
                return;
            }
        }
        System.out.println(false);
    }
}

发表于 2020-04-21 21:31:14 回复(0)
import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.next();
        String word1 = str.split(";")[0];
        String word2 = str.split(";")[1];
        if (word1.length() != word2.length()) {
            System.out.println("false");
        } else {
            System.out.println((word1 + word1).contains(word2));
        }
    }
}
发表于 2019-07-04 16:23:37 回复(5)
import java.util.Scanner;

public class Main {


    public static void main(String[] args) {

        Scanner scanner = new Scanner(System.in);
        String s = scanner.nextLine();
        String[] split = s.split(";");
        String s1 = split[0];
        String s2 = split[1];
        for(int i=0;i<s1.length();i++){
            boolean flag = (s1.substring(i + 1) + s1.substring(0, i + 1)).equals(s2);
            if(flag){
                System.out.println(true);
                return;
            }
        }
        System.out.println(false);
    }
}
发表于 2019-03-02 20:27:38 回复(0)