算法:左旋转字符串

问题

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

解决


// 1、暴力解法,利用字符数组进行输出
class Solution {
    public String reverseLeftWords(String s, int n) {
        int len1=s.length();
        char[] ch=s.toCharArray();

        StringBuffer str=new StringBuffer();
        for(int i=n;i<len1;i++){
            str.append(ch[i]);
        }
        for(int j=0;j<n;j++){
            str.append(ch[j]);
        }
        String st=str.toString();
        return st;
    }
}
//2、利用两个buffer拼接
class Solution{
    public String reverseLeftWords(String s,int n){
        int len2=s.length();
        StringBuffer str1=new StringBuffer();
        StringBuffer str2=new StringBuffer();
        for(int i=0;i<len2;i++){
            if(i<n){
                str1.append(s.charAt(i));
            }else{
                str2.append(s.charAt(i));
            }
        }
        String a=str1.toString();
        String b=str2.toString();
        String st2=(b+a);
        return st2;
    }
}
//3、将原字符串翻倍然后从中截取需要的一部分
class Solution{
    public String reverseLeftWords(String s,int n){
        String s2=s+s;
        return s2.substring(n,n+s.length());        //string.substring()方法不包含结束索引指向的数
    }
}
posted @   new_monkey  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示