代码随想录算法训练营|344.反转字符串、541. 反转字符串II、54.替换数字

server/2024/9/22 14:02:57/

344.反转字符串

题目

参考文章

思路:本题的运用双指针的方式,掉换两个头尾两个元素,然后指针收缩再继续掉换,这里无论字符串大小是否为奇偶,都是可以判断出来的

代码:

class Solution {public void reverseString(char[] s) {int left=0;int right=s.length-1;while(left<right){char temp=s[left];s[left]=s[right];s[right]=temp;right--;left++;}}
}

541. 反转字符串II

题目

参考文章

思路:从题目可以知道,每2k个字符中反转前k个字符,所以每次循环得一次取到2k个字符,然后开始下标为当前i值,而末尾下标就是取:字符串最大长度和从start开始的第k个长度两者的最小值。然后循环交换值,

代码:

class Solution {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;end--;start++;}}return new String(ch);}
}

54.替换数字 

题目

参考文章

思路:判断字符串s中是否有数值出现,如果有数值就len+5(这里加5是因为本身字符串的数值占一个位置,而number是六个位置,最终加了五个位置上去),这里len最终存储的是加入number后的长度。然后设置要给res数组,存储最终加入number后的字符串;这里我们是用从后往前的方式加入元素,大大减少了工作量。先把原来字符串s中的元素加入到数组res中,然后循环,设置i和j,i指向旧数组的末尾位置,j指向的是新数组的位置,判断当前位置是否是数值,如果是,则新数组位置的j--,并存入number元素中的r字符,以此类推;如果不是数值,就直接把该位置的的i赋值给当前j所在的位置,然后i--,这里j是在数组中实现了j--,故在for循环上不显示。最后打印res即可

代码:

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('0' <= res[i] && res[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);}
}


http://www.ppmy.cn/server/120301.html

相关文章

【NTN 卫星通信】关于卫星通信的一次访谈

1 概述 通过CSDN的途径&#xff0c;有个咨询公司找到我&#xff0c;说是有投资公司看到我的博客&#xff0c;希望做一次访谈&#xff0c;我回答了10个问题&#xff0c;现在发到博客上&#xff1b;很多观点都是自己根据经验拍的&#xff0c;并没有严格的计算&#xff0c;有兴趣的…

C++STL六大组件

C标准模板库&#xff08;STL&#xff09;是一个功能强大的库&#xff0c;提供了六大组件&#xff0c;这些组件相互协作&#xff0c;为开发者提供了高效且可重用的数据结构和算法。以下是这六大组件的详细介绍&#xff1a; 容器是用于存储数据的数据结构&#xff0c;它们提供了…

如何有效检测住宅IP真伪?

在当今的互联网时代&#xff0c;住宅IP&#xff08;即家庭用户通过宽带服务提供商获得的IP地址&#xff09;在跨境电商、广告投放、网络安全等多个领域扮演着重要角色。然而&#xff0c;随着网络环境的复杂化和欺诈行为的增多&#xff0c;如何有效检测和辨别住宅IP的真伪成为了…

Kubernetes实战——集群监控和可视化管理

目录 一、Kube-Prometheus 1、版本兼容性介绍 2、安装 kube-prometheus 3、安装Ingress&#xff0c;实现访问 二、K8s安装ELK日志收集 1、安装Elasticsearch 2、安装Logstash 3、安装Filebeat 4、安装Kibina 三、Dashboard安装与使用 1、安装 2、创建token 3、使用 …

【JAVA开源】基于Vue和SpringBoot的企业客户管理系统

本文项目编号 T 036 &#xff0c;文末自助获取源码 \color{red}{T036&#xff0c;文末自助获取源码} T036&#xff0c;文末自助获取源码 目录 一、系统介绍1.1 管理员角色1.2 普通员工角色1.3 系统特点 二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内…

算法练习题27——疫情下的电影院(模拟)

其实思路还好 就是输入有点难搞 Java import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scanner new Scanner(System.in);String input scanner.nextLine();// 去掉输入字符串的方括号if (input.…

2024年中国研究生数学建模竞赛C题——解题思路

2024年中国研究生数学建模竞赛C题——解题思路 数据驱动下磁性元件的磁芯损耗建模——解决思路 二、问题描述 为解决磁性元件磁芯材料损耗精确计算问题&#xff0c;通过实测磁性元件在给定工况&#xff08;不同温度、频率、磁通密度&#xff09;下磁芯材料损耗的数据&#xf…

14、主机、应用及数据安全解读

数据来源&#xff1a;14.主机、应用及数据安全解读_哔哩哔哩_bilibili