首页 > 试题广场 >

旋转相等

[编程题]旋转相等
  • 热度指数:180 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定两个字符串, A 和 B。A 的旋转操作就是将 A 最左边的字符移动到最右边。 例如, 若 A ='abcde',在移动一次之后结果就是'bcdea' 。如果在若干次旋转操作之后,A 能变成B,那么返回True。

输入描述:
共两行,第一行代表字符串A,第二行代表字符串B。且A和B的长度不超过100。A和B只包含大写、小写英文字符。


输出描述:
一行字符串,"True"代表能够通过旋转得到,"False"代表不能通过旋转的到
示例1

输入

abcde
cdeab

输出

True
示例2

输入

abcde
abced

输出

False
import java.util.*;
public class Main{
    public static void main(String[] args){
        Scanner input=new Scanner(System.in);
        String s1=input.nextLine();
        String s2=input.nextLine();
        boolean b=false;
        for(int i=0;i<s1.length();i++){
            s1=getStr(s1);
            if(s1.equals(s2)){
                b=true;
                break;
            }
        }
        if(b)
            System.out.println("True");
        else
            System.out.println("False");
    }

    private static String getStr(String s){
        return s.substring(1)+s.charAt(0);
    }
}
发表于 2020-03-03 18:19:27 回复(0)
所有的数据向前移动,最后再放第一位
发表于 2020-03-04 13:45:54 回复(0)
import java.util.*; public class Main { public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String firstStr = scanner.nextLine();
        String sencondStr = scanner.nextLine();
        scanner.close();  boolean flag = false; for (int i = 0; i < firstStr.length(); i++) {
            String tmp = firstStr.substring(1);
            String firstZimu = firstStr.substring(0,1);
            String convertStr = tmp + firstZimu;
            firstStr = convertStr; if (sencondStr.equals(convertStr)) {
                flag = true; break;
            }
        } if (flag) {
            System.out.println("True");
        } else {
            System.out.println("False");
        }

    }
}

编辑于 2019-12-12 14:28:27 回复(0)