zoukankan      html  css  js  c++  java
  • 程序员面试金典-面试题 01.09. 字符串轮转

    题目:

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

    示例1:

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

    输入:s1 = "aa", "aba"
    输出:False
    提示:

    字符串长度在[0, 100000]范围内。
    说明:

    你能只调用一次检查子串的方法吗?

    分析:

    如果一个字符串时由另一个字符串旋转而成,那么他一定是两个另一个字符串拼接成的串的字串。

    例如s1 = waterbottle s2 = erbottlewat

    两个s2拼接得erbottlewaterbottlewat,而s1是它的字串。

    程序:

    class Solution {
        public boolean isFlipedString(String s1, String s2) {
            if(s1.length() != s2.length())
                return false;
            if(s1.equals(s2))
                return true;
            String str = s1+s1;
            int i = 0, j = 0;
            while(i < str.length()){
                if(str.charAt(i) == s2.charAt(j)){
                    i++;
                    j++;
                }else{
                    j = 0;
                    i++;
                }
                if(j == s2.length())
                    return true;
            }
            return false;
            // return str.contains(s2);
        }
    }
  • 相关阅读:
    手撕RPC框架
    关于JVM的一些冷知识
    luoguP2627 修剪草坪
    [USACO16OPEN]248
    luoguP1171 售货员的难题
    luoguP2016 战略游戏
    luoguP2422 良好的感觉
    POJ1160 [IOI2000]Post Office
    luoguP2015 二叉苹果树
    BZOJ1756 小白逛公园
  • 原文地址:https://www.cnblogs.com/silentteller/p/12396114.html
Copyright © 2011-2022 走看看