完整教程:java-代码随想录第七天|344.反转字符串、541.反转字符串 II、54.替换数字

目录

字符串基础知识

344.反转字符串

541.反转字符串 II

54.替换数字


思路链接:代码随想录

现场面试中,什么时候用库函数,什么时候不用呢?

        1.如果题目关键的部分直接用库函数就可以解决,建议不要使用库函数。

        2.如果库函数仅仅是 解题过程中的一小部分,并且你已经很清楚这个库函数的内部实现原理的话,可以考虑使用库函数。

字符串基础知识

344.反转字符串

链接:344. 反转字符串 - 力扣(LeetCode)

题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。

        不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

题解:使用双指针。

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;
left++;
right--;
}
}
}

541.反转字符串 II

链接:541. 反转字符串 II - 力扣(LeetCode)

题目:

        给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

  • 如果剩余字符少于 k 个,则将剩余字符全部反转。
  • 如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

题解:在遍历字符串的过程中,只要让 i += (2 * k),i 每次移动 2 * k ,然后判断是否需要有反转的区间。要找的也就是每2 * k 区间的起点,这样写,程序会高效很多。

        当需要固定规律一段一段去处理字符串的时候,要想想在for循环的表达式上做文章。

class Solution {
public String reverseStr(String s, int k) {
char[] ch=s.toCharArray();
for(int i=0;i

54.替换数字

链接:54. 替换数字(第八期模拟笔试)

题目:给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 "a1b2c3",函数应该将其转换为 "anumberbnumbercnumber"。

题解:java中String不能修改。每个数字字符需要替换为number,即多出5个字符的位置,根据这一点确定字符数组的长度;将字符串复制到字符数组中;从后往前,挨个检查如果为数字字符,则替换为number。

import java.util.Scanner;
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='0' && s.charAt(i)=0;i--){
if('0'<=newch[i] && newch[i]<='9'){
newch[j--] = 'r';
newch[j--] = 'e';
newch[j--] = 'b';
newch[j--] = 'm';
newch[j--] = 'u';
newch[j--] = 'n';
}else{
newch[j--]=newch[i];
}
}
System.out.println(newch);
}
}

posted @ 2025-08-13 17:36  yfceshi  阅读(11)  评论(0)    收藏  举报