首页 > 其他分享 >leetcode刷题day8|字符串部分(344.反转字符串、541. 反转字符串II)

leetcode刷题day8|字符串部分(344.反转字符串、541. 反转字符串II)

时间:2024-09-05 22:52:22浏览次数:6  
标签:ch String -- 反转 II int 字符串 Scanner

前言:字符串部分还是比较简单的

344.反转字符串

链接:https://leetcode.cn/problems/reverse-string/description/
思路:这个比较简单,因为字符串也是数组类型的,用两个指针进行交换即可。
代码如下:

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

541. 反转字符串II

链接:https://leetcode.cn/problems/reverse-string-ii/description/
思路:该题的解题重点在于如何判断2k的区间,只需要设置一个循环,使i每次前进2k即可。
代码如下:

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(i+k-1,ch.length-1);
            while(start<end){
                char temp=ch[start];
                ch[start]=ch[end];
                ch[end]=temp;
                start++;
                end--;
            }
        }
        return new String(ch);
    }
}

卡码网:54.替换数字

链接:https://kamacoder.com/problempage.php?pid=1064
注意:Java中字符串不允许更改,这里需要新建一个字符串。
直接新建一个字符串操作的代码如下:

import java.util.Scanner;

class Main{
    public static void main (String[] args) {
        Scanner in = new Scanner(System.in);
        String s=in.nextLine();
        StringBuilder sb =new StringBuilder();
        for(int i=0;i<s.length();i++){
            if(Character.isDigit(s.charAt(i))){
                sb.append("number");
            }else{
                sb.append(s.charAt(i));
            }
        }
        System.out.println(sb);
    }
}

新建一个数组进行详细操作的代码如下:

import java.util.Scanner;

class Main{
    public static void main (String[] args) {
        Scanner in = new Scanner(System.in);
        String s=in.nextLine();
        int len=s.length();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)>='0' && s.charAt(i)<='9'){
                len+=5;
            }
        }
        char[] ch=new char[len];
        for(int i=0;i<s.length();i++){
            ch[i]=s.charAt(i);
        }
        
        for(int i=s.length()-1,j=len-1;i>=0;i--){
            if(ch[i]>='0' && ch[i]<='9'){
                ch[j--]='r';
                ch[j--]='e';
                ch[j--]='b';
                ch[j--]='m';
                ch[j--]='u';
                ch[j--]='n';
            }else{
                ch[j--]=ch[i];
            }
        }
        String sb=new String(ch);
        System.out.println(sb);
    }
}

代码学习:StringBuffer 和 StringBuilder 都是 Java 中用于操作字符串的类,它们提供了构建和修改字符串的能力,但两者之间存在一些关键的区别。

  • StringBuffer 是线程安全的,所有的方法都是同步的,因此在多线程环境下性能较低。在多线程环境中操作字符串时,应使用 StringBuffer。
  • StringBuilder 是非线程安全的,方法是非同步的,在单线程环境下性能更高。在单线程环境中操作字符串时,应使用 StringBuilder。

标签:ch,String,--,反转,II,int,字符串,Scanner
From: https://blog.csdn.net/m0_51007517/article/details/141884905

相关文章

  • 2024.9.5 leetcode 3174 清除数字(字符串)
    题面3174.清除数字-力扣(LeetCode)题解:今天的每日一题比较简单,思路是遍历字符串,遇到第一个数字x的时候,把数字x和前面的字母y删除,也就是删除yx。1、为什么前面一定是字母,因为遇到的是第一个数字,前面不可能再有数字。2、如何实现删除yx,重新定义一个字符串,每一次遍历将y前面的字......
  • 字符串拼接的几种形式
    字符串拼接的几种形式##一.算术运算符1.//+-*/%(取余)2.     intnum=10+10;//20      intnum1=10-10;//0      intnum2=10*10;//100      intnum3=10/10;//1      intnum4=10%......
  • LeetCode 3174. 清除数字(字符串、模拟)
    题目:3174.清除数字思路:用字符串t模拟操作要求,当x是数字时,删除t的最后一个字符。不是的话,直接插入xclassSolution{public:stringclearDigits(strings){stringt="";for(autox:s){if('0'<=x&&x<='9'){......
  • 20240905_154516 python 填空题 字符串方法2
    有字符串列表li=["a","b","c"],让列表成员用+拼接,保存给变量rr="+".join(li)有字符串s,把它的内容变成小写,保存给变量rr=s.lower()有字符串s,把它内部的java全替换为python,保存结果给变量rr=s.replace("java","python")有字符串s="abc",请把它按空符号进行分割,得......
  • MySQL(四)日期函数 NULL函数 字符串函数
    日期函数函数描述NOW()返回当前的日期和时间CURDATE()返回当前的日期CURTIME()返回当前的时间DATE()提取日期或日期/时间表达式的日期部分EXTRACT()返回日期/时间的单独部分DATE_ADD()向日期添加指定的时间间隔DATE_SUB()从日期减去指定的时间......
  • Java毕设项目II基于Java的英语知识应用网站
    目录一、前言二、技术介绍三、系统实现四、论文参考五、核心代码六、源码获取全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末一、前言在全球化日益加深的今天,英语作为国际交流......
  • 【时时三省】c语言例题----华为机试题<截取字符串>
    山不在高,有仙则名。水不在深,有龙则灵。                                    ----CSDN时时三省1,题目HJ46截取字符串描述输入一个字符串和一个整数k,截取字符串的前k个字符并输出数据范......
  • 20240905_144516 python 填空题 字符串方法1
    字符串s="hi",希望它占30个位置,居中,其它位置用!占位,结果用变量r记录r=s.center(30,"!")字符串s="abaac",需要统计s中有多少个a,把结果保存在变量i中i=s.count("a")有字符串s,需要把它转换为utf8的字节数据,把结果保存在变量b中b=s.encode()有字符串s,需要把它转换为gbk的字节......
  • 利用正则表达式从字符串中提取浮点数
    在Python中,使用正则表达式可以非常方便地从字符串中提取浮点数。Python的re模块提供了正则表达式支持。下面是如何使用正则表达式提取浮点数的示例。1、问题背景在开发过程中,有时候我们需要从字符串中提取浮点数,例如从HTML代码中提取价格信息。但是,浮点数的格式可能多种多样......
  • base64是什么,在 C# 中对 Base64 字符串进行编码和解码
    原文链接:https://blog.csdn.net/ty_oldman/article/details/116306785         https://blog.csdn.net/qq_55752792/article/details/139681358base64是什么Base64编码,是由64个字符组成编码集:26个大写字母AZ,26个小写字母az,10个数字0~9,符号“+”与符号“/”。Bas......