首页 > 其他分享 >刷刷刷Day8| 剑指 Offer 58 - II. 左旋转字符串

刷刷刷Day8| 剑指 Offer 58 - II. 左旋转字符串

时间:2023-01-09 19:34:08浏览次数:59  
标签:right 58 Day8 II 字符串 abcdefg cs left String

剑指 Offer 58 - II. 左旋转字符串

LeetCode题目要求

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

示例

输入: s = "abcdefg", k = 2
输出: "cdefgab"
解题思路

// 原串 abcdefg 根据给定的数字 2,转为 cdefgab,即将前两个字符 ab 追加到 cdefg 后面
// 1、可以通过 将 abcdefg 先反转成 gfedcba;
// 2、然后再根据数字 2, 其实是从后面开始把串拆分成两个子串,gfedc ba
// 3、接着再把两个分别反转尾 cdefg 和 ab,拼接两个子串就是所要的结果了

如下图:

图

上代码

class Solution {

    public String reverseLeftWords(String s, int n) {
        // 解题思路
        // 原串 abcdefg 根据给定的数字 2,转为 cdefgab,即将前两个字符 ab 追加到 cdefg 后面
        // 1、可以通过 将 abcdefg 先反转成 gfedcba;
        // 2、然后再根据数字 2, 其实是从后面开始把串拆分成两个子串,gfedc ba
        // 3、接着再把两个分别反转尾 cdefg 和 ab,拼接两个子串就是所要的结果了

        // 1. 反转整串
        String rs = reverse(s);
        // 2. 根据 n 的值拆分串
        int len = s.length();
        String s1 = rs.substring(0, len - n);
        s1 = reverse(s1);
        
        String s2 = rs.substring(len-n, len);
        s2 = reverse(s2);

        return s1+s2;
    }

    public String reverse(String s) {
        char[] cs = s.toCharArray();
        int left = 0;
        int right = cs.length - 1;
        while (left < right) {
            char t = cs[left];
            cs[left] = cs[right];
            cs[right] = t;
            left++;
            right--;
        }
        return new String(cs);
    }
}
重难点

本题写起来并不难,只是比较难想到怎么旋转,通过什么方法做反转。重点是在于字符的反转

附:学习资料链接

标签:right,58,Day8,II,字符串,abcdefg,cs,left,String
From: https://www.cnblogs.com/blacksonny/p/17038344.html

相关文章

  • SPOJ SP32058 R6PL - Harbinger vs Sciencepal
    链接难度:\(\texttt{17/21}\)\(T\)组数据。有\(n\)组,每组有\(2\)个数\(x,y\),问把每组的一个数分配到一组另一个数分配到另一组两组数字和差的绝对值最小是多少。......
  • Python 环境安装教程(Window10系统)原文转载地址:https://cloud.tencent.com/developer/a
    Python环境安装教程(Window发布于2020-02-1022:40:45阅读 14.2K0 Python编程语言非常强大,非常容易上手,版本更新也不慢,在win10x64中兼容性也很好,直接安装不......
  • 刷刷刷Day8| 151. 反转字符串中的单词
    151.反转字符串中的单词LeetCode题目要求给你一个字符串s,请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词......
  • CMU 15-445 | Lecture 04 Database Storage II 学习
    行存储用OLTP(On-lineTransactionProcessing),列存储用OLAP(On-lineAnalyticalProcessing)。大多数数据库是行存储。行存储的读写较方便,因此工业上可以采取混合形式......
  • 216. 组合总和 III
    216.组合总和III难度中等605收藏分享切换为英文接收动态反馈找出所有相加之和为n的k个数的组合,且满足下列条件:只使用数字1到9每个数字最多使用一次返回所有......
  • vue项目部署到IIS服务器
    步骤一:复制文件把build之后的文件(dist文件夹)拷贝到IIS存放网站文件的目录步骤二:在IIS中新建站点步骤三:下载安装模块:urlrewrite传送门:https://www.iis.net/downloads/m......
  • IIS部署https网站使用自签名证书
    转自:http://www.nat123.com/pages_8_751.jsp IIS部署https网站使用自签名证书及绑定域名的参考图文。(内网配置好https网站后可以使用nat123映射将网站映射到外网访问)1,......
  • 【LeetCode数组#5行为模拟】螺旋矩阵II
    螺旋矩阵II力扣题目链接(opensnewwindow)给定一个正整数n,生成一个包含1到n^2所有元素,且元素按顺时针顺序螺旋排列的正方形矩阵。示例:输入:3输出:[[1,......
  • IIS日志脚本定时清理
    1.使用脚本删除IIS日志,编写脚本,创建脚本名称为deleteIISLogFiles.vbssLogFolder="c:\inetpub\logs\LogFiles"`IIS日志路径iMaxAge=30'indays`保持的时......
  • asp.net core 搭建到腾讯云服务器和Sql Server 连接的简单笔记(IIS) Windows系统
     可以先尝试本地搭建。尝试完了再来试试云搭建。看完这个再看这文章,下面那个文章有很多细节https://www.cnblogs.com/hechunfeng/p/17012415.html 第一步,先买一个服......