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;
        }
    }
  • 相关阅读:
    a 超链接标签
    select(下拉标签和textarea(文本框)
    input标签
    input 标签
    div 标签
    body 标签
    STL__网上资料
    STL_iterator返回值
    STL_算法_中使用的函数对象
    STL_std::iterator
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11355727.html
Copyright © 2011-2022 走看看