首页 > 其他分享 >反转字符串II(541)

反转字符串II(541)

时间:2024-08-07 22:52:32浏览次数:9  
标签:字符 反转 II 541 StringBuilder 字符串 个字符 2k

题目描述

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

解题思路

如果按照我们暴力解法的话我们肯定是想一个一个的for循环去遍历,其实这道题说了每次是以2k的进度往前跳跃的,我们可以每次以2k为单位向前移动,然后在做一些边界处理,整体代码不是很难理解,主要是要考虑好各种细节问题,这个你可以自己多尝试提交几次就可以不断的去完善

import java.util.*;
class Solution {
    public String reverseStr(String s, int k) {
        StringBuilder result=new StringBuilder();
        StringBuilder temp;
        for(int i=0;i<s.length();i+=2*k){
            //这一步是处理你的字符串长度可能连轮一个来回都不够的情况
            if(i==0 && s.length()<k){
                temp=new StringBuilder();
             result.append(temp.append(s.substring(i,s.length())).reverse().toString());
                break;
            }else if( i==0 && k<=s.length() && s.length()<2*k ){
                temp=new StringBuilder();
                temp.append(s.substring(i,i+k));
                result.append(temp.reverse().toString());
                result.append(s.substring(i+k,s.length()));
                break;
            }
			//进行反转前k个字符,然后剩余的原封不动的复制下来
            temp=new StringBuilder();
            temp.append(s.substring(i,i+k));
            result.append(temp.reverse().toString());
            result.append(s.substring(i+k,i+2*k));

            //处理不够下一个轮回的情况,就是题目说的那两种种情况
            if( (s.length()-(i+2*k))<k){
                temp=new StringBuilder();
                result.append(temp.append(s.substring(i+2*k,s.length())).reverse().toString());
                break;
            }else if( k<=(s.length()-(i+2*k)) && (s.length()-(i+2*k))<2*k ){
                temp=new StringBuilder();
                temp.append(s.substring(i+2*k,i+2*k+k));
                result.append(temp.reverse().toString());
                result.append(s.substring(i+2*k+k,s.length()));
                break;
            }


        }

        return result.toString();
    }
}
···

标签:字符,反转,II,541,StringBuilder,字符串,个字符,2k
From: https://www.cnblogs.com/dfj-blog/p/18348001

相关文章

  • 【C语言常见函数】格式化输入与字符串处理函数汇总
    格式化输出sprintf()、printf()和fprintf()功能上有本质区别,分别用于向字符串缓冲区、终端和文件输出格式化的数据!简介printf():printf()是C标准库中的函数,用于向标准输出流(通常是终端)输出格式化数据。格式:intprintf(constchar*format,...)通过printf()函数......
  • js 将十进制字符串转换成4字节的字节数组
    函数functionconvertToHexArrays(input){//通过制表符分割输入字符串constnumbers=input.split('\t');//用于存储结果的数组constresult=[];for(letnumofnumbers){//将字符串转换为数字constvalue=parseInt(num)......
  • docker 删除包含某个字符串的镜像
    要删除以swr开头的Docker镜像,你可以使用以下步骤结合命令行操作来实现:列出所有以swr开头的镜像:首先,你需要找到所有以swr开头的镜像。使用dockerimages命令结合grep来过滤结果:dockerimages--format"{{.Repository}}:{{.Tag}}"|grepswr删除这些镜像:使用上一步的命......
  • Python 中的排序与 ASCII 编码解析
    1.引言    不知道你有没有想过用Python进行一些排序的工作,对于一些数量比较小的数字集合(例如:1、15、32、79、6、55)我们可以迅速发现最大的79和最小的1,但当这个数量非常大的时候,我们找大小就很费劲了,而这种繁琐的工作就应该派计算机出马了2.比大小  a.常规数字比......
  • 代码随想录day 48 每日温度 | 下一个更大元素 I | 下一个更大元素II
    每日温度每日温度解题思路单调栈的意思其实是指栈内的元素单调递增/递减,我们可以通过这个特性存储元素的下标,然后每次入栈时与栈顶坐标的元素进行比较,如果小于等于就不需要弹出直接存入,如果大于,则需要不断弹出栈顶直到遇到一个小于其的栈顶元素或者栈为空。知识点单调栈心......
  • 关于武汉芯景科技有限公司的带中断及复位功能2选1IIC主选择芯片XJ9541开发指南(兼容PC
    一、芯片引脚介绍1.芯片引脚2.引脚描述二、典型应用电路三、功能描述1.Register02.Register13.Register2四、程序代码    此处只展示master0的代码,master1也可以直接套用此代码XJ9541master0.CPP#include"Arduino.h"#include<Wire.h>#inclu......
  • 字符串左旋(c语言)
    1.字符串左旋//实现一个函数,可以左旋字符串的k个字符例如:ABCD左旋字符串的1个字符BCDA     ABCD左旋字符串的2个字符CDAB2.第一步我们先输入k(scanf),将第一位进行储存,然后其他位先前走一位,然后将第一位放在最后,然后进行打印。方法一#include<stdio.h>voidtest......
  • condition字符串匹配问题
      概述freeswitch是一款简单好用的VOIP开源软交换平台。fs使用dialplan配置文件执行业务流程,condition条件变量的配置是必然会使用的,这里记录一次配置过程中的错误示范。环境CentOS7.9freeswitch1.10.7问题描述dialplan配置如下,本意是根据通道变量${poolType}的值,......
  • 上海泗博技术分享:kepware如何读取西门子PLC的中文字符串?
    随着信息化水平的不断提升,实际生产运行过程中,各类PLC不可避免地需要应对字符信息的应用场景,这种需求日益凸显,对于提高生产效率和数据管理的精准性至关重要。考虑到国内环境的需求,中文字符串的支持也成为项目改造和应用的重要环节。一些报警信息和事件如果可以通过中文字符串的形式......
  • 以 \n 作为字节读取字节字符串
    我有一个字节字符串,我想将其读入python中。该字符串是从numpyfloat64到字节的浮点转换。问题是我的一些数据在转换时最终将换行符'\n'字符作为字节。如何阻止python继续运行当遇到“\n”字符时很疯狂这是我的数据value:np.float64=np.float64(0.054765......