zoukankan      html  css  js  c++  java
  • 左旋转字符串-剑指Offer

    左旋转字符串

    题目描述

    汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

    思路

    1. 借助于字符串翻转,若要左旋转前n个字符串,就先翻转整个字符串,再分别翻转前n个和后面的字符

    代码

    public class Solution {
        public String LeftRotateString(String str,int n) {
            if (str == null || str.length() == 0 || n < 0 || n > str.length()) {
                return "";
            }
            char[] strChar = str.toCharArray();
            reverse(strChar, 0, n - 1);
            reverse(strChar, n, strChar.length - 1);
            reverse(strChar, 0, strChar.length - 1);
            return String.valueOf(strChar);
    
        }
        public void reverse(char[] data, int start, int end) {
            if (data == null || start >= end) {
                return;
            }
            while (start < end) {
                char temp = data[start];
                data[start] = data[end];
                data[end] = temp;
                start++;
                end--;
            }
            return;
        }
    }
  • 相关阅读:
    Sum Root to Leaf Numbers 解答
    459. Repeated Substring Pattern
    71. Simplify Path
    89. Gray Code
    73. Set Matrix Zeroes
    297. Serialize and Deserialize Binary Tree
    449. Serialize and Deserialize BST
    451. Sort Characters By Frequency
    165. Compare Version Numbers
    447. Number of Boomerangs
  • 原文地址:https://www.cnblogs.com/rosending/p/5674749.html
Copyright © 2011-2022 走看看