算法019:字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。

220 阅读1分钟
题目:
   字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。

 示例1:
  输入:s1 = "waterbottle", s2 = "erbottlewat"
  输出:True

 示例2:
  输入:s1 = "aa", s2 = "aba"
  输出:False
 提示:
 字符串长度在[0, 100000]范围内。
 说明:
 你能只调用一次检查子串的方法吗?
 
思路:
旋转的化,考虑s2+s2.contans(s1) 如果为true则为旋转,要不然不是旋转的,注意对长度的判断

1.代码如下IsFlipedString.java:

package com.yuhl.right.leetcode;

/**
 * @author yuhl
 * @Date 2020/10/25 8:33
 * @Classname IsFlipedString
 * @Description 字符串轮转
 * 字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。
 *
 * 示例1:
 *  输入:s1 = "waterbottle", s2 = "erbottlewat"
 *  输出:True
 *
 * 示例2:
 *  输入:s1 = "aa", s2 = "aba"
 *  输出:False
 * 提示:
 * 字符串长度在[0, 100000]范围内。
 * 说明:
 * 你能只调用一次检查子串的方法吗?
 */
public class IsFlipedString {
    public static void main(String[] args) {
        String s1 = "waterbottle";
        String s2 = "erbottlewat";
        boolean flipedString = isFlipedString(s1, s2);
        System.out.println(flipedString);
    }

    public static boolean isFlipedString(String s1, String s2) {
        //旋转的化,考虑s2+s2.contans(s1) 如果为true则为旋转,要不然不是旋转的,注意对长度的判断
        if(s1.length() != s2.length()) return false;
        if((s2+s2).contains(s1)){
            return true;
        }else{
            return false;
        }

    }
}

2.执行结果:

"C:\Program Files\Java\jdk1.8.0_201\bin\java.exe" 
true