zoukankan      html  css  js  c++  java
  • 796. Rotate String

    We are given two strings, A and B.

    shift on A consists of taking string A and moving the leftmost character to the rightmost position. For example, if A = 'abcde', then it will be 'bcdea' after one shift on A. Return True if and only if A can become B after some number of shifts on A.

    Example 1:
    Input: A = 'abcde', B = 'cdeab'
    Output: true
    
    Example 2:
    Input: A = 'abcde', B = 'abced'
    Output: false
    

    Note:

    • A and B will have length at most 100.

    M1: use built-in methods

    time = O(n), space = O(1)

    class Solution {
        public boolean rotateString(String A, String B) {
            return A.length() == B.length() && (A + A).contains(B);
        }
    }

    M2: two pointers

    time = O(n), space = O(1)

    class Solution {
        public boolean rotateString(String A, String B) {
            if(A.length() != B.length()) {
                return false;
            }
            int i = 0, j = 0;
            while(i < A.length()) {
                if(A.charAt(i) != B.charAt(j)) {
                    if(j != 0) {
                        j = 0;
                    } else {
                        i++;
                    }
                } else {
                    i++;
                    j++;
                }
            }
            
            if(j == B.length()) {   // same, no rotation
                return true;
            }
            i = 0;
            while(j < B.length()) {
                if(A.charAt(i++) != B.charAt(j++)) {
                    return false;
                }
            }
            return true;
        }
    }
  • 相关阅读:
    二进制拆分线段树
    2017 初赛PJ 错题解析
    线段树基操
    2015 初赛PJ 错题解析
    2016 初赛TG 错题解析
    拓扑排序找最大环最小环
    长乐集训合集
    java读取网页
    java下socket传图片
    java下socket传文件
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11355727.html
Copyright © 2011-2022 走看看