调整字符串

给定两个字符串,A 和 B.

A 的旋转操作就是将 A最左边的字符移动到最右边。例如,若 A='abcde',在移动一次之后结果就是'bcdea'如果在若干次调整操作之后,A能变成B,那么返回True:如果不能匹配成功,则返回false

java 复制代码
import java.util.Scanner;

/**
 * @author gyf
 * @ClassName Test
 * @Date 2024/8/2 11:08
 * @Version V1.0
 * @Description : 方法一
 */
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String str1 = scanner.next();
        System.out.println("请输入第二个字符串:");
        String str2 = scanner.next();
        boolean check = check(str1, str2);
        System.out.println(check);

    }

    /**
     * @Description: 旋转字符串,把左侧的字符串移动到右侧去
     * @Param: [str]  旋转前的字符串
     * @return: String 旋转后的字符串
     * @Author: gyf
     * @Date: 13:40 2024/8/3
     */
    public static String rotate(String str) {
        // 方法一: 使用subString 进行截取,把左侧的字符截取出来拼接到右侧去
        // 方法二: 可以把字符串先变成一个字符数组,然后调整里面的数据,最后拼接成字符串
        char first = str.charAt(0);
        String end = str.substring(1);
        return end + first;
    }

    public static boolean check(String strA, String strB) {
        // 长度不等 直接返回false
        if (strA.length() != strB.length()) {
            return false;
        }
        // 旋转的次数
        for (int i = 0; i < strA.length(); i++) {
            strA = rotate(strA);
            if (strA.equals(strB)) {
                return true;
            }
        }
        return false;
    }
}
java 复制代码
import java.util.Scanner;

/**
 * @author gyf
 * @ClassName Test
 * @Date 2024/8/2 11:08
 * @Version V1.0
 * @Description :方法二:可以把字符串先变成一个字符数组,然后调整里面的数据,最后拼接成字符串
 */
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String str1 = scanner.next();
        System.out.println("请输入第二个字符串:");
        String str2 = scanner.next();
        System.out.println(check(str1, str2));

    }

    // 把字符串变成字符数组
    public static char[] getArray(String str) {
        char[] chars = new char[str.length()];
        for (int i = 0; i < str.length(); i++) {
            chars[i] = str.charAt(i);
        }
        return chars;
    }

    // 旋转的拼接操作
    public static String rotate(char[] chars) {
        StringBuilder sb = new StringBuilder("");
        //将后面的字符放到前面
        for (int i = 1; i < chars.length; i++) {
            sb.append(chars[i]);
        }
        //再把第一个字符放到最后
        sb.append(chars[0]);
        // 返回拼接的字符串
        return sb.toString();
    }

    public static boolean check(String str1, String str2) {
        if (str1.length() != str2.length()) {
            return false;
        }
        // 旋转的次数
        for (int i = 0; i < str1.length(); i++) {
            str1 = rotate(getArray(str1));
            if (str1.equals(str2)) {
                return true;
            }
        }
        return false;
    }
}
java 复制代码
import java.util.Scanner;

/**
 * @author gyf
 * @ClassName Test
 * @Date 2024/8/2 11:08
 * @Version V1.0
 * @Description :方法二简化版本
 */
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入第一个字符串:");
        String str1 = scanner.next();
        System.out.println("请输入第二个字符串:");
        String str2 = scanner.next();
        System.out.println(check(str1, str2));

    }
    // 旋转的拼接操作
    public static String rotate(String str) {
        // 调用方法将字符串转换为字符数组
        char [] arr = str.toCharArray();
        char first = arr[0];
        for (int i = 1; i < arr.length; i++) {
            // 把后面的元素往前移动
            arr[i-1] = arr[i];
        }
        // 把第一个元素放到最后
        arr[arr.length-1] = first;
        String strs = new String(arr);
        return strs;
    }

    public static boolean check(String str1, String str2) {
        if (str1.length() != str2.length()) {
            return false;
        }
        // 旋转的次数
        for (int i = 0; i < str1.length(); i++) {
            str1 = rotate(str1);
            if (str1.equals(str2)) {
                return true;
            }
        }
        return false;
    }
}
相关推荐
qq_33631393几秒前
javaweb-web基础(springboot入门)
java·开发语言·mysql
闻哥2 分钟前
从测试坏味道到优雅实践:打造高质量单元测试
java·面试·单元测试·log4j·springboot
smileNicky2 分钟前
统一网关的登录流程总结
java
计算机程序设计小李同学15 分钟前
基于 Spring Boot + Vue 的龙虾专营店管理系统的设计与实现
java·spring boot·后端·spring·vue
LiZhen79819 分钟前
SpringBoot 实现动态切换数据源
java·spring boot·mybatis
周航宇JoeZhou28 分钟前
JB2-7-HTML
java·前端·容器·html·h5·标签·表单
JZC_xiaozhong39 分钟前
多系统权限标准不统一?企业如何实现跨平台统一权限管控
java·大数据·微服务·数据集成与应用集成·iam系统·权限治理·统一权限管理
爬山算法2 小时前
Hibernate(85)如何在持续集成/持续部署(CI/CD)中使用Hibernate?
java·ci/cd·hibernate
菜鸟233号2 小时前
力扣647 回文子串 java实现
java·数据结构·leetcode·动态规划
qq_12498707532 小时前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计