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

news2024/10/3 3:25:09
🍎道阻且长,行则将至。🍓

🌻算法,不如说它是一种思考方式🍀


算法专栏: 👉🏻123


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

  • 题目描述:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
  • 来源:力扣(LeetCode)
  • 难度:简单
  • 提示:
    1 <= k < s.length <= 10000
  • 示例 1:
    输入: s = “abcdefg”, k = 2
    输出: “cdefgab”

🌴解题

1.直接使用字符串的substring

就是直接截取前后子字符串拼接即可:

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

在这里插入图片描述

2.通过StringBuilder

使用可变字符串来编辑,先把整个字符串反转,再把两段分别反转就是答案了:

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

        reverseString(ns,0,s.length()-n-1);
        reverseString(ns,s.length()-n,s.length()-1);
        return ns.toString();
    }

    private static void reverseString(StringBuilder ns, int i, int length) {
        while (i<length){
            char tem= ns.charAt(i);
            ns.setCharAt(i,ns.charAt(length));
            ns.setCharAt(length,tem);
            i++;length--;
        }
    }
}

在这里插入图片描述

3.使用字符数组

创建等长的字符串数组,从旋转的点开始向后填进数组,到最后的位置返回到字符串第一个(取余吧),直到n个字符结束。

class Solution {
    public String reverseLeftWords(String s, int n) {
        char[]ns=new char[s.length()];
        for (int i = 0; i < s.length(); i++) {
            ns[i]=s.charAt((i+n)%s.length());
        }
        return new String(ns);
    }
}

知止而后有定,定而后能静,静而后能安,安而后能虑,虑而后能得。
物有本末,事有终始。知所先后,则近道矣。——《大学》

返回第一页。☝


☕物有本末,事有终始,知所先后。🍭

🍎☝☝☝☝☝我的CSDN☝☝☝☝☝☝🍓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/436586.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

正则表达式 - 电话号码

正则表达式是描述一组字符串特征的模式&#xff0c;用来匹配特定的字符串。 一、需求 写一个正则表达式匹配电话号码&#xff0c;并且括号、连字符或点号都是可选的。假定合规数据只包含以下15种匹配模式之一&#xff1a; xxxxxxx 8277019xxx.xxxx 82…

【Microsoft Edge】详解 Edge 的扩展程序

Edge 扩展程序 安装与卸载显示与隐藏开启与关闭导入与导出导出导入操作好处与优势 安装与卸载 可从 https://microsoftedge.microsoft.com/addons?hlzh-CN 获取你想要的扩展程序。 也可以使用 Chrome Web Store &#xff0c;但出于某些原因&#xff0c;需要科学上网。 获取后…

初赛-排列组合概念

1.加法原理: 完成一个工程可以有n类办法&#xff0c;a[i](1<i<n) 代表第i类方法的数目。 那么完成这件事共有 S a[1]a[2]...a[n]种不同的方法。 2.乘法原理: 完成一个工程需要分n个步骤&#xff0c;a[i](1<i<n) 代表第i个步骤的不同方法数目。 那么完成这件…

DnsAddressResolverGroupFactory.create(DnsAddressResolverGroupFactory.java:33)

今天处理了一个dubb升级造成的包冲突&#xff0c;记录下&#xff0c;希望能帮到一些有同样问题的小伙伴&#xff0c;并且将自己解决包冲突的想法总结下 背景&#xff1a; 因为dubbo出现安全漏洞&#xff0c;公司的安全组要求将dubbo的版本由2.7.3-SNAPSHOT 升级到 2.7.3.7-RE…

Windows 10, version 22H2 (2023年3月) 简体中文版、英文版下载

Windows 10, version 22H2 (updated March 2023) 简体中文版、英文版下载 Windows 10 22H2 2023 年 3 月更新 Windows 10 是微软公司推出的一款操作系统&#xff0c;是 Windows 系列操作系统的最新版本&#xff0c;于2015年7月正式发布。Windows 10 被设计为既适用于桌面电脑和…

ActiveMQ使用(二):在JavaScript中使用mqtt.js

ActiveMQ使用(二):在JavaScript中使用mqtt.js 1. 环境准备 jQuery-1.10 下载地址:https://www.jsdelivr.com/package/npm/jquery-1.10.2?tabfilesmqtt.js 4.3.7: 下载地址:https://www.jsdelivr.com/package/npm/mqtt 2. 相关代码 <!DOCTYPE html> <html lang&q…

引用【C++初阶】

目录 一、引用 1、概念 2、特性 3、常引用 4、使用常景 5、传值与传引用的效率性能比较 6、指针和引用的区别 一、引用 1、概念 引用不是新定义一个变量&#xff0c;而是给已存在的变量取一个别名&#xff0c;编译器不会为引用变量开辟内存空间&#xff0c;它和它引用的…

线程方法,生命周期,线程状态,Synchronized,

package com.hspedu.method;/*** author 韩顺平* version 1.0*/ public class ThreadMethod01 {public static void main(String[] args) throws InterruptedException {//测试相关的方法T t new T();t.setName("老韩");t.setPriority(Thread.MIN_PRIORITY);//设置优…

初识网络安全应急响应

初识网络安全应急响应 1.应急响应的基本能力2.应急响应的基本流程 1.应急响应的基本能力 一、数据采集、存储和检索 能对全流量数据协议进行还原&#xff1b;能对还原的数据进行存储&#xff1b;能对存储的数据快速检索。 二、事件发现 能发现高级可持续威胁&#xff08;AP…

【Redis】Redis十大数据类型—集合set

介绍 set类型是一个无序并唯一的键值集合&#xff0c;set的存储顺序不会按照插入的先后顺序进行存储。 一个集合最多可以存储2^32-1个元素。 set类型除了支持集合内的增删改查&#xff0c;同时还支持多个集合取交集、并集、差集。 Set 类型和 List 类型的区别如下&#xff1…

cgroups 实践

CPU 限制 1. 创建测试的 cgroup 在 /sys/fs/cgroup/cpu 下面创建自己的 cgroups 测试目录&#xff0c;该目录会自动创建一些文件&#xff0c;对进程或者线程的控制都可以通过修改这些文件内容自动完成。 tasks&#xff1a;被 cgroup 管理的进程 cpu.cfs_period_us&#xff1a…

多线程(九):JUC组件

在来时juc组件前&#xff0c;我们先把上一章遗漏的部分给补上。 synchronized 实现策略&#xff1a;锁升级&#xff1a; 无锁 -> 偏向锁 -> 轻量级锁 -> 重量级锁 还有一个 &#xff1a; 锁消除 锁消除即删除不必要的加锁操作。JVM在运行时&#xff0c;对一些“…

C++内联函数详解

目录 如何定义内联函数&#xff1f; 内联函数的优势 内联函数的缺点 内联函数的使用场景 示例代码 总结 在C中&#xff0c;内联函数是一种特殊的函数&#xff0c;它的作用是在程序编译时将函数的代码直接嵌入到调用该函数的代码中&#xff0c;从而避免了函数调用的开销。这…

C语言 非本地跳转实现native层TryCatch

前言 最近研究native hook的技术&#xff0c;了解到了这个非本地跳转&#xff0c;本文就是介绍他&#xff0c;对于解决native crash非常有用。 非本地跳转介绍 C语言的本地跳转是指goto、break、continue等语句&#xff0c;但是这个语句最大局限就是只能实现函数内部的跳转。…

深度学习 - 40. N-Gram 采样与 Session 数据获取 For EGES

目录 一.引言 二.订单数据预处理 1.数据样例 2.订单数据处理 3.用户 Session 构建 三.构造 sku_id 游走序列 1.获取完整 Session List 2.统计 sku_id 转移词频 3.构建 sku_id 图 4.游走构造 sku 序列 四.商品侧信息预处理 1.读取商品信息 2.Left Join 匹配侧信息 …

三甲医院体检管理系统源码PEIS ,体检总检建议、体检套餐、各种模板

PEIS体检管理系统源码 本套PEIS医院体检管理系统源码&#xff0c;采用C#语言开发&#xff0c;C/S架构&#xff0c;前台开发工具为Vs2012&#xff0c;后台数据库采用oracle大型数据库。有演示。 文末获取联系 PEIS体检管理系统适用于大中型医院的独立体检中心、干部保健处、民营…

Java基础:编译时和运行时的区别

在java开发设计过程中&#xff0c;了解java运行时和编译时的区别非常有必要。 如下从几个问题来描述两者的区别 1、如下代码片段中&#xff0c;A行和B行的区别是什么 line A是在编译时计算值&#xff0c;line B是在运行时计算值。 当该类编译后&#xff0c;如果使用一些反编译…

ROS导航

参考文章&#xff1a; (31条消息) ROS导航小车1 teb_local_planner参数(仅作记录/收集)_teb local planner参数_Crush Mome的博客-CSDN博客 运行导航&#xff1a; 1. 启动底盘控制包 &#xff1a; base_conctronl 2.启动键盘控制节点&#xff1a; rosrun teleop_twist_ke…

ROG魔霸7Plus电脑一直蓝屏错误怎么重装系统?

ROG魔霸7Plus电脑一直蓝屏错误怎么重装系统&#xff1f;有用户在使用ROG魔霸7Plus电脑的时候&#xff0c;频繁的遇到了系统蓝屏的情况。因为这样影响了自己的正常使用&#xff0c;所以想要进行系统的重新安装。那么如何进行系统重装操作呢&#xff1f;来看看以下的操作方法教学…

ONES × 中国信通院《中国企业软件研发管理白皮书》即将发布 | 预约直播

由 ONES 与中国信息通信研究院联合发起的《中国企业软件研发管理白皮书》&#xff08;下称「白皮书」&#xff09;将于 4 月 20 日 正式发布。白皮书由 ONES、中国信息通信研究院云计算与大数据研究所、招商基金管理有限公司、紫金财产保险股份有限公司、深圳市鸿合创新信息技术…