判断两个字符串是否互为旋转词

Posted loremwalker

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了判断两个字符串是否互为旋转词相关的知识,希望对你有一定的参考价值。

题目

对于一个字符串str,把前面任意部分挪到后面形成的字符串叫作str的旋转词。比如str=”12345”,其旋转词有”23451”、”34512”、”45123”、”51234”。给定两个字符串a和b,判断a和b是否互为旋转词。

实现

这是一种非常讨巧的实现方式,将原始字符串累加一次,并以用String自带的contains方法判断是否包含所判断的是否匹配的字符串

import org.junit.Assert;
import org.junit.Test;

/**
 * @author lorem
 */
public class IsRotationTest {
    boolean isRotation(String str1, String str2) {
        if (str1 == null || str2 == null || str1.length() != str2.length()) {
            return false;
        }
        String str = str1 + str1;
        if (str.contains(str2)) {
            return true;
        }
        return false;
    }
    @Test
    public void test() {
        String str1 = "abcd";
        String str2 = "dcad";
        Assert.assertEquals(true,isRotation(str1, str2));
    }
}

以上是关于判断两个字符串是否互为旋转词的主要内容,如果未能解决你的问题,请参考以下文章

[算法]旋转词问题

两串旋转问题(KMP)

字符串问题----判断两个字符串是否互为变形词

判断两个字符串是否互为变形词

字符串旋转词句子逆序化字符串移位最小字典序字符串问题

字符串旋转(str.find()---KMP)