LeetCode Day8|● 344.反转字符串(原地) ● 541. 反转字符串II(i可以大步跨越) ● 卡码网:54.替换数字(ACM模式多熟悉熟悉)

字符串part01

    • day8-1 ● 344.反转字符串
      • 整体思路
      • 代码实现
      • 总结
    • day8-2 ● 541. 反转字符串II
      • 整体思路
      • 代码实现
      • 总结
    • day8-3 ● 卡码网:54.替换数字
      • 题目
      • 解题思路
      • 代码实现
      • 总结

day8-1 ● 344.反转字符串

整体思路

字符串和数组的思路差不多
原地操作

代码实现

class Solution {/*** 时间复杂度: O(n)* 空间复杂度: O(1)*/public void reverseString(char[] s) {int l = 0;int r = s.length - 1;while(l < r){char temp = s[l];s[l] = s[r];s[r] = temp;l++;r--;}}
}

总结

一般每门编程语言的都有库函数实现

day8-2 ● 541. 反转字符串II

整体思路

for 循环里面的 i 可以成段成段的跳越,不一定要 i++ 一步一步地跳跃

代码实现

class Solution {/** * 时间复杂度: O(n)* 空间复杂度: O(1)*/public String reverseStr(String s, int k) {char[] ch = s.toCharArray();// 每隔2k将前k个字符进行反转for(int i = 0; i < ch.length; i+=2*k){if(i + k <= ch.length){// 取等与否可以用特殊用例测试 i=0 s=abc k=3reverse(ch, i, i + k - 1);// 左闭右闭continue;}// 剩余字母少于k个,则将剩余字符全部反转reverse(ch, i, ch.length - 1);}return new String(ch);}private void reverse(char[] ch, int i, int j){while(i < j){char temp = ch[i];ch[i] = ch[j];ch[j] = temp;i++;j--;}}
}
class Solution {/** * 时间复杂度: O(n)* 空间复杂度: O(1)*/public String reverseStr(String s, int k) {char[] ch = s.toCharArray();for(int i = 0; i < ch.length; i+=2*k){int start = i;int end = Math.min(ch.length - 1, start + k -1);while(start < end){char temp = ch[start];ch[start] = ch[end];ch[end] = temp;start++;end--;}}return new String(ch);}
}

总结

for循环里面的i可以成段成段(2k 段)的跳越,不一定要 i++ 一步一步地跳跃

day8-3 ● 卡码网:54.替换数字

题目

在这里插入图片描述

解题思路

从后向前填充,减少空间复杂度

代码实现

import  java.util.*;public class Main{public static void main(String[] args){Scanner sc = new Scanner(System.in);String s = sc.next();int len = s.length();// 统计长度for(int i = 0; i < s.length(); i++){if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){len += 5;}}// 拷贝char[] res = new char[len];for(int i = 0; i < s.length(); i++){res[i] = s.charAt(i);}// 替换for(int i = s.length() - 1, j = len - 1; i >= 0;i-- ){if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){res[j--] = 'r';res[j--] = 'e';res[j--] = 'b';res[j--] = 'm';res[j--] = 'u';res[j--] = 'n';}else{res[j--] = res[i];}}System.out.println(res);}
} 

总结

acm模式得多熟悉熟悉

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

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

相关文章

非常好的新版网盘系统,是一款PHP网盘与外链分享程序,支持文件预览

这是一款PHP网盘与外链分享程序&#xff0c;支持所有格式文件的上传&#xff0c; 可以生成文件外链、图片外链、音乐视频外链&#xff0c;生成外链同时自动生成相应的UBB代码和HTML代码&#xff0c; 还可支持文本、图片、音乐、视频在线预览&#xff0c;这不仅仅是一个网盘&a…

算法思想总结:字符串

一、最长公共前缀 . - 力扣&#xff08;LeetCode&#xff09; 思路1&#xff1a;两两比较 时间复杂度mn 实现findcomon返回两两比较后的公共前缀 class Solution { public:string longestCommonPrefix(vector<string>& strs) {//两两比较 string retstrs[0];size…

MySQL里的累计求和

在MySQL中&#xff0c;你可以使用SUM()函数来进行累计求和。如果你想要对一个列进行累计求和&#xff0c;可以使用OVER()子句与ORDER BY子句结合&#xff0c;进行窗口函数的操作。 以下是一个简单的例子&#xff0c;假设我们有一个名为sales的表&#xff0c;它有两个列&#x…

Python接口自动化测试框架(工具篇)-- 接口测试工具RobotFramework

文章目录 一、前言二、[robotframework](https://robotframework.org/)为什么要选择使用RF框架环境搭建测试用例编写我的第一个接口测试用例小结一、前言 这篇文章是后面临时加的戏码,原本计划是将一个个能做接口测试的工具,全都给梳理一遍,但是题主有疑问,光一篇文章能让…

Android之间互传消息之ServerSocket,Android服务端接收Socket发送的TCP

Android之间在在局域网下互传消息&#xff0c;咱就不用走云服务器了吧&#xff0c;让俩安卓设备&#xff0c;自己传呗 方式1 通过在安卓设备上搭建Web服务器接收数据&#xff0c;可参考 Android使用AndServer在安卓设备上搭建服务端(Java)(Kotlin)两种写法 方式2 本文章&…

Open3d入门 点云中的重要概念

点云是由一组三维空间中的点组成的数据结构&#xff0c;常用于计算机视觉、3D建模和地形图生成等领域。每个点包含空间坐标&#xff08;x, y, z&#xff09;以及其他属性&#xff08;如颜色、密度等&#xff09;。以下是一些重要的点云概念&#xff1a; 1. 体素 (Voxel) 体素…

容器安全最佳实践和工具

容器安全最佳实践和工具 什么是容器安全 容器安全是指保护容器化应用程序和基础设施免受潜在威胁和攻击的措施和策略。容器化技术&#xff08;如Docker、Kubernetes&#xff09;使得应用程序能够在隔离的环境中运行&#xff0c;这既提供了灵活性&#xff0c;也引入了新的安全…

Vue3+Vite+TS+Axios整合详细教程

1. Vite 简介 Vite是新一代的前端构建工具&#xff0c;在尤雨溪开发Vue3.0的时候诞生。类似于Webpack Webpack-dev-server。其主要利用浏览器ESM特性导入组织代码&#xff0c;在服务器端按需编译返回&#xff0c;完全跳过了打包这个概念&#xff0c;服务器随起随用。生产中利用…

【java深入学习第6章】深入解析Spring事件监听机制

在Spring框架中&#xff0c;事件监听机制是一个强大且灵活的功能&#xff0c;允许我们在应用程序中发布和监听事件。这种机制可以帮助我们实现松耦合的设计&#xff0c;使得不同模块之间的通信更加灵活和可维护。本文将详细介绍Spring的事件监听机制&#xff0c;并通过代码示例…

赛氪网荣获2024年中国高校计算机教育大会合作伙伴荣誉

2024年7月13日&#xff0c;在黑龙江哈尔滨召开的“2024年中国高校计算机教育大会&#xff08;CCEC2024&#xff09;”&#xff0c;环球赛乐&#xff08;北京&#xff09;科技有限公司(以下简称”赛氪网“)凭借其在高等教育与科技创新领域的卓越贡献&#xff0c;荣幸地获得了本次…

Python基础——函数

函数 和c语言函数意义相同&#xff0c;函数定义基础语法如下。 def 函数名&#xff08;传入参数&#xff09;:函数体return 返回值 展示自定义一个函数并对其进行封装。 # 自定义函数字符串长度计算str1 "itcast" count0 for x in str1:count 1 print(f"{c…

昇思25天学习打卡营第20天|CycleGAN图像风格迁移互换

模型简介 CycleGAN(Cycle Generative Adversarial Network) 即循环对抗生成网络&#xff0c;来自论文 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks 。该模型实现了一种在没有配对示例的情况下学习将图像从源域 X 转换到目标域 Y 的方法。…

Uniapp 使用 Leaflet

在 Uniapp 中使用 Leaflet &#xff0c;可以按照以下步骤进行&#xff1a; 安装 Leaflet &#xff1a; 如果您使用的是 H5 平台&#xff0c;可以通过以下命令在项目根目录安装 Leaflet &#xff1a; npm install leaflet 对于其他平台&#xff08;如小程序&#xff09;&#xf…

0基础学会在亚马逊云科技AWS上利用SageMaker、PEFT和LoRA高效微调AI大语言模型(含具体教程和代码)

项目简介&#xff1a; 小李哥今天将继续介绍亚马逊云科技AWS云计算平台上的前沿前沿AI技术解决方案&#xff0c;帮助大家快速了解国际上最热门的云计算平台亚马逊云科技AWS上的AI软甲开发最佳实践&#xff0c;并应用到自己的日常工作里。本次介绍的是如何在Amazon SageMaker上…

【学习笔记】无人机(UAV)在3GPP系统中的增强支持(九)-无人机服务区分离

引言 本文是3GPP TR 22.829 V17.1.0技术报告&#xff0c;专注于无人机&#xff08;UAV&#xff09;在3GPP系统中的增强支持。文章提出了多个无人机应用场景&#xff0c;分析了相应的能力要求&#xff0c;并建议了新的服务级别要求和关键性能指标&#xff08;KPIs&#xff09;。…

漫漫寻亲路,浓浓亲情长,在岁月的长河中,每个人的生命都如同一段独特的旅程,充满了未知的曲折与惊喜

《漫漫寻亲路,浓浓亲情长》在岁月的长河中,每个人的生命都如同一段独特的旅程,充满了未知的曲折与惊喜。而对于那些在幼年便与亲生父母离散的孩子来说,这段旅程更是充满了迷茫、渴望与不懈的追寻。 王龙,一个出生在被竹林环绕的村庄的孩子,从记事起,他的世界便是香蕉园…

Solidworks工程图替换参考零件

1.用solidworks选择工程图文件&#xff0c;点击参考。 2.双击文件名 3.选择新的参考零件&#xff0c;点击确定。

[ruby on rails]部署时候产生ActiveRecord::PreparedStatementCacheExpired错误的原因及解决方法

一、问题&#xff1a; 有时在 Postgres 上部署 Rails 应用程序时&#xff0c;可能会看到 ActiveRecord::PreparedStatementCacheExpired 错误。仅当在部署中运行迁移时才会发生这种情况。发生这种情况是因为 Rails 利用 Postgres 的缓存准备语句(PreparedStatementCache)功能来…

力扣第406场周赛

力扣第406场周赛 100352. 交换后字典序最小的字符串 - 力扣&#xff08;LeetCode&#xff09; 贪心&#xff0c;从 0 0 0开始扫描到 n n n如果有一个可以交换的就立马交换 class Solution { public:string getSmallestString(string s) {for(int i1;i<s.size();i){if(s[i…

【PyQt】

PyQT5线程基础&#xff08;2&#xff09; 线程案例案例一案例二 线程案例 案例一 案例一代码通过线程实现点击按钮向线程传输地址&#xff0c;程序等待20秒后&#xff0c;返回结果。 通过QtDesigner创建如下图所示的界面ui&#xff0c;并用UIC工具转成对应的py文件。 Ui_tes…