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

题目

对于一个字符串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));
    }
}

原文地址:https://www.cnblogs.com/loremwalker/p/9736166.html

时间: 2024-10-05 10:43:58

判断两个字符串是否互为旋转词的相关文章

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

判断两个字符串是否互为变形词 给定两个字符串 str1 和str2 ,如果两个字符串中出现的字符种类一样,次数也一样,则互为变形词,实现一个函数判断两个字符串是否互为变形词.例如 str1="123",str2="132",true; str1="123",str2="1332",false; [解题思路] 1. 首先比较两个字符串的长度,长度不同肯定是false. 2. 如果长度相同,新建一个数组,用以存储每个字符出现次数.

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

把一个字符串str 前面任意的部分挪到后面形成的字符串叫做str的旋转词 举例, a="cdab" b="abcd" 返回true a="1ab2" b="ab12" 返回false 解法很简单, 首先长度要一样 然后 生成一个大字符串b2 为两个字符串b拼在一起的结果 最后看看 b2中是否包含字符串a package TT; public class Test3 { public boolean isRotation(Str

判断两个字符串是否是变位词 (keep it up)

写一个函数判断两个字符串是否是变位词.变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词.比如说, abbcd和abcdb就是一对变位词 这也是简单的题. 我们可以排序然后对比, 也可以直接统计字符出现的个数来判断.这里给出统计字符来判断的代码: bool isAnagram1(const string& vLeft, const string& vRight) { if (vLeft.size() != vRight.size()) return false; in

判断两个byte是否互为格雷码。

如果两个byte的二进制表示中仅有一位不同,则它们互为格雷码,写个函数判断两个byte是否互为格雷码. public class IsCogray { public boolean isCogray(char a, char b) { int m = a ^ b; return m != 0 && (m & (m - 1) & 0xff) == 0; } public static void main(String[] args) { IsCogray ic = new I

005推断两个字符串是否是变位词 (keep it up)

写一个函数推断两个字符串是否是变位词. 变位词(anagrams)指的是组成两个单词的字符同样,但位置不同的单词.比方说, abbcd和abcdb就是一对变位词 这也是简单的题. 我们能够排序然后对照, 也能够直接统计字符出现的个数来推断.这里给出统计字符来推断的代码: bool isAnagram1(const string& vLeft, const string& vRight) { if (vLeft.size() != vRight.size()) return false; i

JavaSE8基础 String equalsIgnoreCase 判断两个字符串的内容是否相同 (不区分大小写)

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.t02; public class Demo { public static void main(String[] args) { // 判断两个字符串的内容相同吗 不区分大小写 String s1 = "jizuiku"; String s2 = "a

java中判断两个字符串是否相等的问题

我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在java中,用的是equals(); 例:A字符串和B和字符串比较: if(A.equals(B)){ } 返回true 或false. String 的equals 方法用于比较两个字符串是否相等.由于字符串是对象类型,所以不能用简单的"=="判断.而使用equals比较两个对象的内容是否

JavaSE8基础 String equals 判断两个字符串的内容是否相同(区分大小写)

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.t02; public class Demo { public static void main(String[] args) { // 判断两个字符串的内容相同吗 String s1 = "jizuiku"; String s2 = "abcdef&q

[算法]判断两个字符串是否由相同的字符组成

如何判断两个字符串是否由相同的字符组成 题目描述: 由相同的字符组成是指组成两个字符串的字母以及各个字母的个数是一样的,只是排列顺序不同而已.例如"aaaabbc"与"abcbaaa"就由相同的字符组成的. 方法一: 排序法,将两个字符串中的字符排序,比较两个排序后的字符串是否相等.若相等则表明它们是由相同的字符组成的,否则,表明他们是由不同的字符组成的. import java.util.Arrays; public class Solution { public