Java 检查字符串的旋转

Java 检查字符串的旋转

给定两个字符串s1和s2,写一个片段来检查s2是否是s1的旋转。字符串可能包含重复的内容。

例子。

Input :  s1 = "ABCD", s2 = "CDAB"
Output : True
String s1 is rotation of s2.

Input :  s1 = "ABAD", s2 = "ADAB"
Output : True

Input : s1 = ABCD, and s2 = ACBD 
Output : False

建议:请先在{IDE}上尝试你的方法,然后再继续解决

一个 简单的解决方案 是在s2中搜索s1的第一次出现。对于每一个匹配,检查剩余的字符串是否循环匹配。

一个 有效的解决方案 是将s1与它本身连接起来。s2是s1的旋转,当且仅当它是旋转后的字符串的子串。在java中,我们可以使用字符串包含或indexOf来检查子串。

// Java program to check if two given strings are
//  rotations of each other
  
class StringRotation {
  
    /* Function checks if passed strings (str1 and str2)
       are rotations of each other */
    static boolean areRotations(String str1, String str2)
    {
        // There lengths must be same and str2 must be
        // a substring of str1 concatenated with str1.
        return (str1.length() == str2.length()) && 
               ((str1 + str1).contains(str2));
    }
  
    // Driver method
    public static void main(String[] args)
    {
        String str1 = "AACD";
        String str2 = "ACDA";
  
        if (areRotations(str1, str2))
            System.out.println("Yes");
        else
            System.out.printf("No");
    }
}

输出:

Yes

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程