首页 > 其他分享 >Leetcode 剑指 Offer 58 - II. 左旋转字符串(Zuo xuan zhuan zi fu chuan lcof)

Leetcode 剑指 Offer 58 - II. 左旋转字符串(Zuo xuan zhuan zi fu chuan lcof)

时间:2023-09-02 23:01:08浏览次数:39  
标签:chuan end 58 Offer int start length 字符串 sb

题目链接

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

示例 1:

输入: s = "abcdefg", k = 2
输出: "cdefgab"

示例 2:

输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"

提示:

  • 1 <= k < s.length <= 10000

思路

首先反转前n个字符, 再反转后n个字符, 最后将整个字符串反转即可得到结果.

或者直接使用substring方法截取再拼接.

代码实现

自定义方法:

class Solution {
    public String reverseLeftWords(String s, int n) {
        int length = s.length();
        StringBuilder sb = new StringBuilder(s);
        reverseString(sb, 0, n - 1);
        reverseString(sb, n, length - 1);
        reverseString(sb, 0, length - 1);
        return sb.toString();

    }

    private void reverseString(StringBuilder s, int start, int end) {
        while (start < end) {
            char temp = s.charAt(start);
            s.setCharAt(start, s.charAt(end));
            s.setCharAt(end, temp);
            start++;
            end--;
        }
    }
}

substring:

class Solution {
    public String reverseLeftWords(String s, int n) {
        return s.substring(n, s.length()) + s.substring(0, n);
    }
}

标签:chuan,end,58,Offer,int,start,length,字符串,sb
From: https://www.cnblogs.com/ahci316/p/17674365.html

相关文章

  • 剑指 Offer 44. 数字序列中某一位的数字(中等)
    题目:classSolution{//本题单纯找规律,要注意通过n%digits来判断有几个位数为digits的数public:intfindNthDigit(intn){longbase=9,digits=1;//digits代表位数while(n-base*digits>0){//该循环是为了确定目标数字所在数num......
  • 【WCH蓝牙系列芯片】-基于CH582开发板—基础外设输出PWM波形讲解
    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------在WCH官方提供的CH583的EVT资源包中,我们可以找到PWMX的例程,这是一个8位的PWM输出,占空比和周期可调的......
  • 剑指 Offer 48. 最长不含重复字符的子字符串 java
    请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例1:输入:"abcabcbb"输出:3解释:因为无重复字符的最长子串是"abc",所以其长度为3。示例2:输入:"bbbbb"输出:1解释:因为无重复字符的最长子串是"b",所以其长度为1。示例3:输入......
  • 剑指 Offer 14- II. 剪绳子 II(中等)
    题目:classSolution{//本题用贪心算法,拆成尽可能多的3且不可以出现长度为1的小段。用dp会溢出,放弃吧public:intcuttingRope(intn){if(n==2)return1;if(n==3)return2;if(n==4)return4;longlongres=1;......
  • 剑指 Offer 48. 最长不含重复字符的子字符串
    请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。 示例 1:"abc",所以其示例2:"b"示例3:"wke""pwke" 提示:s.length<=40000使用滑动窗口,哈希表来记录:classSolution{publicintlengthOfLongestSubstring(Strings){HashMap<Ch......
  • 使用全套开源工具构建 LLM 应用实战:在 Dify 调用 Baichuan 开源模型能力
    背景在当下开源大语言模型火热的背景下,有很大一部分开发者希望本地部署开源LLM,用于研究LLM或者是基于开源LLM构建自己的LLM应用。笔者也正在尝试通过开源社区的一系列相关优秀项目,通过本地化部署服务来构建自己的LLM应用。那么本地部署一个开源LLM来构建一个聊天应用需......
  • 【剑指Offer】剑指offer题目汇总
    【剑指Offer】剑指offer题目汇总本文为《剑指Offer》刷题笔记的总结篇,花了两个多月的时间,将牛客网上《剑指Offer》的66道题刷了一遍,以博客的形式整理了一遍,这66道题属于相对基础的算法题目,对于刷题练手是很好的实践,接下来会继续回到LeetCode,争取每天拿出一个小时,刷一到两道题。......
  • 【剑指Offer】15、反转链表
    【剑指Offer】15、反转链表题目描述:输入一个链表,反转链表后,输出新链表的表头。解题思路:本题比较简单,有两种方法可以实现:(1)三指针。使用三个指针,分别指向当前遍历到的结点、它的前一个结点以及后一个结点。将指针反转后,三个结点依次前移即可。(2)递归方法。同样可以采用递归来实现......
  • 剑指 Offer 16. 数值的整数次方
    根本思想就是二进制能够表示任意类型的数。classSolution{public:doublemyPow(doublex,intn){//为了防止判断n为负数取反时造成溢出//用longlong类型接收longlongN=n;//记录N是否是负数intflag=0;......
  • 剑指 Offer 60. n个骰子的点数(中等)
    题目:classSolution{public:vector<double>dicesProbability(intn){vector<double>dp(6,1.0/6.0);//dp[j]表示和为j时的概率,这里j=6是因为这是第一个骰子,骰子增多j也会改变for(inti=2;i<=n;i++){//从第二个骰子开始计算dp[j]的概率......