左旋转字符串

来源:互联网 发布:剑三大师捏脸数据 编辑:程序博客网 时间:2024/05/16 13:49

题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它思路:假设字符串长度为m,然后循环左移n位,先把整个字符串逆置,然后分别将前m-n位和后n位逆置.

代码:

public class Solution {    public String LeftRotateString(String str,int n) {        String result = "";        if(str.equals("") || n <0) return result;        char [] str2char = str.toCharArray();        int j = str2char.length - 1;        for(int i = 0;i < str2char.length/2; ++i){            char temp = str2char[i];            str2char[i] = str2char[j];            str2char[j]  = temp;            j--;        }        int k = str2char.length-n - 1;        for(int i = 0; i < (str2char.length-n) / 2;i++){            char temp = str2char[i];            str2char[i] = str2char[k];            str2char[k] = temp;            k--;        }        int m = str2char.length - 1;        for(int i = str2char.length - n;i < str2char.length - (n/2); ++i){            char temp = str2char[i];            str2char[i] = str2char[m];            str2char[m] = temp;            m--;        }        result = String.valueOf(str2char);        return result;    }}


原创粉丝点击