• 【Offer】[58-2] 【左旋转字符串】


    题目描述

      字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2, 该函数将返回左旋转两位得到的结果"cdefgab"。

    牛客网刷题地址

    思路分析

      首先根据传入的n将字符串分为两部分,分别翻转这两个部分,然后在整体对字符串进行翻转
     

    测试用例

    1. 功能测试:把长度为n的字符串左旋转0个字符、1个字符、2个字符、n-1个字符、n个字符、n+1个字符。
    2. 特殊输入测试:字符串的指针为nullptr指针。

    Java代码

    public class Offer058_02 {
        public static void main(String[] args) {
            test1();
            test2();
            test3();
    
        }
    
        public static String LeftRotateString(String str, int n) {
            return Solution1(str, n);
        }
    
        private static String Solution1(String str, int n) {
            
            if(str==null|| str.length()<=0) {
                return str;
            }
            if(n<=0 || n> str.length()) {
                return str;
            }
            char[] charArray = str.toCharArray();
            
            reverseCore(charArray, 0, n-1);
            reverseCore(charArray, n, charArray.length-1);
            reverseCore(charArray, 0, charArray.length-1);
            return String.valueOf(charArray);
        }
        
        private static void reverseCore(char[] s,int start,int end) {
            while(start<end) {
                char tmp = s[start];
                s[start] = s[end];
                s[end] = tmp;
                start++;
                end--;
            }
        }
    
        private static void test1() {
    
        }
    
        private static void test2() {
    
        }
    
        private static void test3() {
    
        }
    
    }
    

    代码链接

    剑指Offer代码-Java

  • 相关阅读:
    myeclipse 8.6 安装svn插件
    最简单的jdbc程序
    win7 安装Redis
    面试问题
    在linux/unix中查找大文件
    Java:单例模式的七种写法
    JAVA设计模式之单例模式
    java_String和StringBuffer区别分析
    stringbuffer与stringbuilder的区别?
    String与StringBuffer的区别
  • 原文地址:https://www.cnblogs.com/haoworld/p/offer582-zuo-xuan-zhuan-zi-fu-chuan.html
Copyright © 2020-2023  润新知