代码随想录算法训练营第8天|反转字符串I和II、替换数字

lc344反转字符串

思路

双指针左右开弓法

代码

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

lc541反转字符串II

思路

循环中步长改为2k,每一次循环只翻转从起始位置起的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;
                start++;
                end--;
            }
        }
        return new String(ch);
    
    }
}

卡码网54替换数字

思路

对于线性数据结构,填充或者删除,后序处理会高效的多

代码

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[] ret = new char[len];
        for (int i = 0; i < s.length(); i++) {
            ret[i] = s.charAt(i);
        }
        for (int i = s.length() - 1, j = len - 1; i >= 0; i--) {
            if ('0' <= ret[i] && ret[i] <= '9') {
                ret[j--] = 'r';
                ret[j--] = 'e';
                ret[j--] = 'b';
                ret[j--] = 'm';
                ret[j--] = 'u';
                ret[j--] = 'n';
            } else {
                ret[j--] = ret[i];
            }
        }
        System.out.println(ret);
    }
}

全部评论

相关推荐

面了差不多27分钟自我介绍面试一开始,面试官打开了摄像头,但由于网络问题,我提到面试官说话有点卡,随后他就关闭了摄像头。谈谈你对C++、Go语言和Java语言的理解面试官让我谈谈对这三种编程语言的理解,我主要讲了指针、内存回收等方面的内容。谈谈你对HTTPS的理解这个问题主要考察我对网络安全协议的了解。进程与线程的区别面试官让我解释进程和线程的区别。你实习项目说一下我详细介绍了自己在实习期间参与的项目。你的博客项目是你自己做的一个博客项目吗?我如实回答,项目是跟着网上教程做的,但我自己扩展了一些功能,比如实现了线程池。Java垃圾回收机制面试官让我解释Java的垃圾回收机制。反问环节面试官表示我掌握的知识还可以,但对C++和Go语言的接触较少。随后他问我对云的了解,我回答了云服务器和网盘等常见的云服务,并与传统硬件和存储进行了对比。面向对象:2025届毕业生,可使用此内推码:NTAAi5Z1.&nbsp;官网投递进入校招官网,输入内推码进行:投递即可(1)云智校招官网:https://app-tc.mokahr.com/m/recommendation-apply/csig/6007?sharePageId=54604&amp;recommendCode=NTAAi5Z&amp;codeType=1#/recommendation/page/54604(2)云智内推码:NTAAi5Z2.&nbsp;工作地点西安、武汉、长沙、重庆、厦门、大连3.&nbsp;Q&amp;AQ:我可以投递几个岗位?A:每位同学可投递两个岗位(如后台开发-2025届校园招聘&nbsp;&amp;&nbsp;客户端开发-2025届校园招聘),请同学们查看岗位描述,选择最适合的岗位进行投递。如同学在简历筛选后希望修改投递岗位,请通过邮箱或者云智校招QQ与我们联系。Q:之前投递过暑期实习岗位,秋招还能投递吗?A:可以,不影响秋招简历投递哦,快选择心仪的职位投递吧!Q:面试方式是什么?A:本次校园招聘以线上远程面试为主,在线上远程视频面试时,建议同学处于熟悉且安静的环境中,并提前检查摄像头、麦克风和耳机是否运行正常、网速达标且稳定等、安装最米哈游新版的腾讯会议或Chrome/QQ浏览器。面试安排若有任何变动,我们将第一时间通过短信或邮件告知。Q:我想调整面试时间或面试形式,应该联系谁?A:请尽量按时参与面试,如果临时有事或因不可抗力无法参加,可以通过邮箱或者云智校招QQ与我们联系,说明你的姓名、联系方式、调整原因以及可以调整的几个时间段。Q:如何查看我的面试进展?A:如需查询招聘进展,可点击【腾讯云智研发】微信公众号,在后台回复“校招进度”即可获得查询链接;也可以登录云智校招官网,进入“投递记录“查看招聘进展及面试情况。Q:云智与腾讯集团的关系是什么?A:云智全称腾讯云与智慧产业研发公司,简称“云智研发公司”。作为腾讯集团的子公司,云智由腾讯云与智慧产业事业群(CSIG)全面管理,与CSIG总部联合形成分布式研发的组织模式,推进云与产业互联网战略落地。Q:我们是腾讯员工吗?薪酬福利如何?A:云智研发公司是腾讯旗下的子公司,我们是腾讯子公司正式员工。云智研发公司独立运行,致力于为每一个加入团队的伙伴提供有保障和竞争力的薪酬福利、成长发展平台。投递的uu评论一下姓名缩写加岗位(HFG+产品经理),我会尽力跟进~经理),我会尽力跟进~
腾讯云智研发
|
校招
|
超多精选岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务