字符串调整

数组调整与字符串优化的算法解析 本篇博客主要探讨了数组调整和字符串优化中的高级算法问题,包括如何在满足特定条件的前提下调整数组元素的位置,以及如何通过算法优化实现字符串的高效处理。文章详细解析了数组调整问题的解题思路,包括时间复杂度和空间复杂度的考量,以及如何处理字符串以达到最优解。通过具体实例和代码实现,展示了算法在实际问题中的应用。 阅读详情

今天听左大神讲了一个和字符串有关的问题感觉挺有意思的决定把它实现一下。

题目:给定一个字符串str,和一个整数i,i代表str中的位置,将str[0,i]移到右侧,str[i+1,N-1]移到左侧(N为字符串长度)。

举例:str=“ABCDE”,i=2,将str调整为“DEABC”。

要求:时间复杂度为O(n),额外时间复杂度为O(1)。

解题思路:

(1)将str[0,i]部分的字符逆序

   A B C D E  ——>  C B A D E

(2)将str[i+1,N-1]部分的字符逆序

  C B A D E  ——>  C B A E D

(3)将str整体逆序

  C B A E D  ——>  D E A B C

代码:

public class strAdjust {
    public static void main(String[] args) {
        String str="ABCDE";
        int i=2;
        str=reverse(str,0,i);
        str=reverse(str,i+1,str.length()-1);
        str=reverse(str,0,str.length()-1);
        System.out.println(str);
    }
    public static String reverse(String str,int begin,int end){
        int len=(((begin+end)%2)==0)?(begin+end)/2:((begin+end)/2+1);
        char [] chars=str.toCharArray();
        for(int i=begin;i<len;i++){
            char temp=chars[i];
            chars[i]=chars[end-i+begin];
            chars[end-i+begin]=temp;
        }
        return new String(chars);
    }
}
算法第一步,下一篇总结一下排序。

替换与调整字符串 文章目录替换与调整字符串替换字符串算法思路相应代码调整字符串算法思路相应代码小结 替换与调整字符串 替换字符串 【题目】 给定一个字符类型的数组chas[],chas右半区全是空字符,左半区不含有空字符。 现在想将左半区中所有的空格字符替换成” ″,假设chas右半区足够大,可以满足替换所需要的空间,请完成替换函数。 【举例】 如果把chas的左半区看作字符串,为”a b c”,假设chas的右半区足够大。 替换后, chas的左半区为”a b c”。 【要求】 替换函数的时间复杂度为O(N)O(N)O(N),额外空间复杂度为O(1)O(1)O(1)。 算法思路 统计左半区 立即下载

相关推荐

避坑指南:在Ubuntu 22.04上配置UR5e与ROS2 Humble真机通信的完整流程

本文详细介绍了在Ubuntu 22.04上配置UR5e机械臂与ROS2 Humble真机通信的完整流程,包括环境准备、网络配置、URCap安装、ROS2驱动部署及控制器状态验证等关键步骤。特别针对常见问题如网络连接失败、驱动启动错误等提供了实用解决方案,帮助工程师高效完成UR5e与ROS2的集成工作。

weixin_30790841的博客 465

调整字符串

如果在若干次调整操作之后,A能变成B就返回true。如果不能匹配成功,则返回false。2.可以把字符串变成一个字符数组,然后调整字符数组里面的数据,最后把字符数组变成字符串。1.使用substring进行截取,将左侧的字符截取出来拼接到右侧去。例如:若A='abcde',在移动一次后结果就是'bcdea'。套路:如果以后我们看到要修改字符串的内容,有以下两个办法。A的旋转操作就是将A最左边的字符移动到最右边。给定两个字符串,A和B。注意:字符串不可以修改。

m0_74198346的博客 278

将运算放大器(运放)用作比较器

我们研究了一些经典的运算放大器电路。这些电路中运用了负反馈,因此通常就可以使运算放大器工作在线性区域内。 但是,也可以将运算放大器用作比较器,从而使其以非线性方式工作。由于其输入受到硬驱动,因此其输出电压会对电源轨产生猛烈的冲击。如下文所示,这可能并不总是一种好的设计方法。 变为非线性 在线性应用中,可以对运算放大器做如下理想假设:无限增益和带宽、零输出阻抗、无限输入阻抗,以及输入之间为零伏。也可以将运算放大器以非线性方式使用,但有一些地方要特别注意和处理。 一种常见的配置是仅使用开环运算放大器(无反馈),

ltqdxl的博客 3万+

程序员代码面试指南刷题--第五章.字符串的调整II

题目描述 给定一个字符类型的数组chas[],chas右半区全是空字符,左半区不含有空字符。现在想将左半区的空格字符串替换成“%20”,假设chas右半区足够大,可以满足替换需要的空间,请完成替换函数。 输入描述: 输出一行,代表chas的左半区(1≤length(chasleft)≤105)(1 \leq length(chas_{left}) \leq 10^5 )(1≤length(chasleft​)≤105) 。 输出描述: 输出一行,代表替换后的字符串。 示例1 输入 a b c 输

我不是什么好人 694

Mixly/Arduino实战:WS2812点阵动态显示自定义图案与汉字

本文手把手教你使用Mixly和Arduino驱动WS2812点阵屏,实现自定义图案与汉字的动态显示。内容涵盖硬件连接、取模软件设置、高效数据处理技巧(巧用Excel)、Mixly图形化编程及Arduino代码解析,并深入探讨动态显示与滚动汉字原理,最后提供常见问题排查与性能优化心得,助你从零开始轻松玩转智能硬件。

weixin_29185199的博客 454

避坑指南:处理A股通达信分时数据转日K线时,你可能会遇到的3个时间戳问题

本文针对量化交易中处理A股通达信分时数据转日K线时的常见时间戳问题,提供了专业解决方案。重点解析了午休时段处理、Pandas重采样参数设置及CSV读取时的日期解析陷阱,帮助开发者避免数据预处理错误,提升策略回测准确性。适用于Python量化交易开发者。

weixin_42549496的博客 289

字符串类型的算法面试

字符串类型的算法面试题特点 1. 广泛性 1.字符串可以看做字符类型的数组与数组排序、查找、调整有关 2.很多其它类型的面试题可以看做字符串类型的面试题 注意:用JAVA实现字符串类型的题目是,由于java.lang.String类型不可修改,我们可以使用StringBuffer,StringBuileder类和toCharArray方法。 2. 需掌握的概念

zcf396720的专栏 874

【02】【VisionMaster V4.0.0 】安装教程—— 授权文件更新报错:应用程序与本地LM通讯出错(怀疑电脑加密 和 上网受限 造成的 )

本文详细介绍了海康VisionMaster 4.0试用版的安装流程及常见问题解决方案。主要内容包括:1)从官网下载基础安装包、试用补丁和授权文件;2)按顺序安装主程序、补丁和授权文件;3)针对授权失败问题提供两种解决方案(更换未加密电脑或使用加密狗);4)说明试用版的功能限制(30天试用期、2个流程限制等)。文章特别指出电脑加密可能导致授权失败,并提供了安装报错时的处理建议,为初次使用者提供了完整的安装指导。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 7183

js 字符串操作函数

走进前端行业已有两年之久,对于字符串的操作也是家常便饭了,但也总在查查找找,如今对于我这个强迫症患者开始爆发了。 对字符串的操作做以下整理,废话不多说直接走起来。 1、字符串转换 字符串转换是最基础的要求和工作,你可以将任何类型的数据都转换为字符串,你可以用下面三种方法的任何一种: var num=24; var mystr=num.toString(); //...

451

uniapp 实现RFID识别的实战指南

本文提供了在uniapp中实现RFID识别的完整实战指南。核心在于通过Android系统广播机制,利用uni-app的plus对象调用原生接口,完成与RFID手持设备的“软硬件握手”。文章详细介绍了从环境准备、设备选型、核心代码实现到避坑优化的全流程,帮助开发者快速构建高效的RFID盘点或管理应用。

weixin_29161719的博客 407

华为OD机考双机位C卷 - 信道分配(Java & Python& JS & C/C++ & GO )

华为OD机考双机位C卷 - 信道分配

算法大师! 454

有关字符串的一些算法

例1: 给定彼此独立的两棵树头节点分别为t1和t2,判断t1中是否有与t2树拓扑结构完全相同的子树。 解: ①普通解法:二叉树遍历+匹配问题 考察t1中以每个节点为头的子树是否与t2一致,如果N代表t1节点数,M代表t2节点数,则时间复杂度为O(N*M); ②最优解为二叉树序列化+KMP算法 a.将二叉树t1序列化为字符串str1,t2序列化为字符串str2; b.用KMP算法判断str1中是否含...

Miaoshuowen的博客 393

【气候模式降尺度】分位数增量映射(QDM)原理及MATLAB代码实现

简介QDM原理及其MATLAB代码实现

WW、forever的博客 5863

字符串的调整I

字符串的调整I 题目描述 给定一个字符串chas[],其中只含有字母字符和“”字符,现在想把所有“”全部挪到chas的左边,字母字符移到chas的右边。完成调整函数。 输入描述: 输入一行字符串代表chas(1≤lengthchas≤105)chas(1 \leq length_{chas} \leq 10^5 )chas(1≤lengthchas​≤105)。 输出描述: 输出一行,代表返回的字符串。 示例1 输入 qw**23 输出 **qw23 示例2 输入 o*f*f*e*r 输出 ****

MIC10086的博客 422

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

java调整字符串

现在是给定两个字符串, 选定其中一个进行调整, (我们想一下,如果调整字符串的长度次,那不就是返回到原来的字符串了吗,所以调整是可以有固定次数的)str_char_array[str_char_array.length - 1] = sign;//把头索引的值给最后索引位置上。//把数组转换成字符串。System.out.println("完毕,可以转换");/* 如果调整成功则给提示,返回不成功也给提示。

m0_74892619的博客 216

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

【习题】--调整字符串

public class 字符调整_01 {public class 字符调整_03 {

m0_65368672的博客 413

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

字符串的调整与替换

//字符串的调整与替换 public class StringModRep{ //从右到左倒着复制(替换) public static void replace(char[]chas) { if(chas==null||chas.length==0) { return ; } int num=0; int len=0; for

ZCC的专栏 1372

Java调整字符串

/2.可以把字符串先变成一个字符数组,然后调整字符数组里面数据,最后把字符数组变成字符串。如果在若干次调整操作之后,A能变成B,那么返回true,不能匹配成功返回false。//1.用subString进行截取,把最左边的字符截取出来拼接到最右侧去。例如:若A='abcde',在移动一次之后结果就是'bcdea'//套路:如果我们看到要修改字符串的内容,有两个办法。A的旋转操作就是将A最左边的字符移动到最右边。给定两个字符串,A和B。1.方法1:截取思路。

TNTxd的博客 542

json字符串调整

碰到比较长的json字符串,不知道哪里出错时,可以找一个正确的json字符串,慢慢把它调整到需要的形式,而不是去分析,字符串太长,一直看,效率太慢,容易看花眼。 转载于:https://www.cnblogs.com/xqnq2007/p/6808130.html...

ankuai2015的博客 208

调整字符串的内容并比较

摘要:本文介绍了两种Java方法来判断字符串A能否通过旋转操作变成字符串B。第一种解法使用subString截取拼接实现旋转,第二种解法先将字符串转为字符数组操作后再转回字符串。两种方法都先校验长度是否相等,再通过最多n次旋转比较字符串是否匹配。文章还分享了修改字符串的两个常用套路:subString截取拼接法和字符数组转换法,最后感谢读者支持并附上运行结果示例。

2301_80785839的博客 558

python调整、修改字符串中特定字符至特定的index处

基本述求: 将字符串如:str_i = '高度近视眼底改变右眼,左眼底窥不清'的语序调整为正常语序。即:str_i = '右眼高度近视眼底改变,左眼底窥不清',具体执行代码如下: 示例代码: # 移动字符串str_i下的指定index的字符move_pre到字符串的开头 def move_str_to_index(str_i, drop_index, move_key): # move_pre为准备修改的字符组,如:双健康!右!左眼底窥不清中“右!左” ,drop_index为移动字符所在的index

Yale-曼陀罗 1433

java字符串综合练习(转换罗马数字和调整字符串)

【代码】java字符串综合练习(转换罗马数字和调整字符串)

2402_84235386的博客 239
上一篇: Python学习之旅之函数
下一篇: Java知识点小总结(一)
yang_9613
博客等级 码龄10年 1粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值