Rotate String

Given a string and an offset, rotate string by offset. (rotate from left to right)

Example

Given "abcdefg".

offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"

分析:利用 (A^TB^T)^T = BA
 1 public class Solution {
 2     /**
 3      * @param str: an array of char
 4      * @param offset: an integer
 5      * @return: nothing
 6      */
 7     public void rotateString(char[] str, int offset) {
 8         if (str == null || str.length <= 1) return;
 9         offset = offset % str.length;
10         if (offset == 0) return;
11
12         int p = str.length - 1 - offset;
13
14         swapFromIToJ(str, 0, p);
15         swapFromIToJ(str, p + 1, str.length - 1);
16         swapFromIToJ(str, 0, str.length - 1);
17     }
18
19     public void swapFromIToJ(char[] str, int i, int j) {
20         while (i < j) {
21             char temp = str[i];
22             str[i] = str[j];
23             str[j] = temp;
24             i++;
25             j--;
26         }
27     }
28 }


时间: 2024-10-16 21:37:08

Rotate String的相关文章

LeetCode算法题-Rotate String(Java实现)

这是悦乐书的第317次更新,第338篇原创 在开始今天的算法题前,说几句,今天是世界读书日,推荐两本书给大家,<终身成长>和<禅与摩托车维修艺术>,值得好好阅读和反复阅读. 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第186题(顺位题号是796).给定两个字符串A和B,在A上进行移位操作,规则是将A最左边的字符移动到最右边去.例如,如果A ='abcde',那么在A上移位一次后,它将是'bcdea'.当且仅当A在A上移位一定次数后可以变为B时返回True.

LeetCode 796. Rotate String

原题链接在这里:https://leetcode.com/problems/rotate-string/ 题目: We are given two strings, A and B. A 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' aft

LintCode: Rotate String

C++, time: O(n) space:O(n) 1 class Solution { 2 public: 3 /** 4 * @param str: a string 5 * @param offset: an integer 6 * @return: nothing 7 */ 8 void rotateString(string &str, int offset) { 9 // wirte your code here 10 // empty string->return 11 if

796. Rotate String

We are given two strings, A and B. A 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 becom

[LeetCode] Rotate String 旋转字符串

We are given two strings, A and B. A 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 becom

LeetCode题解之Rotate String

1.题目描述 2.问题分析 直接旋转字符串A,然后做比较即可. 3.代码 1 bool rotateString(string A, string B) { 2 if( A.size() != B.size() ) 3 return false; 4 if( A.empty() && B.empty() ) 5 return true; 6 int i = 0 ; 7 while( i < A.size() ){ 8 char c = A[0] ; 9 A += c; 10 A.er

796. Rotate String旋转字符串

[抄题]: We are given two strings, A and B. A 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

LeetCode - Rotate String

We are given two strings, A and B. A 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 becom

[LeetCode&amp;Python] Problem 796. Rotate String

We are given two strings, A and B. A 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 becom