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;
        }
    }
  • 相关阅读:
    全国城市经纬度
    CentOS下SSH无密码登录的配置
    Nginx 1.9+PHP5.6 环境搭建
    Sphinx 2.2.11-release reference manual
    JVM 内存管理机制
    solr 3.5.0 与 tomcat 7.0.5 整合配置
    lucene 分词实现
    lucene 索引 demo
    lucene 搜索demo
    Lucene 简单API使用
  • 原文地址:https://www.cnblogs.com/fatttcat/p/11355727.html
Copyright © 2011-2022 走看看