代码随想录算法刷题训练营第七天 | 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54.替换数字

344.反转字符串

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

视频讲解:字符串基础操作! | LeetCode:344.反转字符串_哔哩哔哩_bilibili

 思路:交换两个字符,用双指针

左一个 l ,右一个 r ,让他们同时向中间靠近,while(l<r){ xxxxxx;  l++;r--;}

交换两个数有三种方法:

//交换a,b;
int c;
c = a;
a = b;
b = c;
a = a^b;
b = a^b;
c = a^b;
a = a+b;
b = a-b;
a = a-b;

要理解库函数的原理,比如第三题,replace的底层是怎么实现的

541. 反转字符串II 

题目链接:. - 力扣(LeetCode)

文章讲解:代码随想录 (programmercarl.com)

视频讲解: 字符串操作进阶! | LeetCode:541. 反转字符串II_哔哩哔哩_bilibili

 思路:模拟题,for循环进行操作,i+=2*k,进行遍历,如果最后小于k,反转最后那段.

反转用while(l<r){xxxxxx; l++;r--}

分情况写出r即可

卡码网:54.替换数字

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

文章讲解:代码随想录 (programmercarl.com)

 思路:把数字字符替换成字符串,可以用Java的replace实现,因为String不能修改,所以借助StringBuilder,遍历原字符串将目标字符串append到StringBuilder里

不借助库函数,从基础实现,面试会问你用过那个字符串处理函数,然后会让你说它是怎么实现的,如果平时多练,到时候可以答上来.

Java可以新建一个字符数组 (长度通过记算数字数目) ,用str.arraycopy操作,将源字符串放到新字符数组里面,可以规定原数组开始下标,复制到新数组下标的位置,复制长度.

然后用双指针,对字符数组进操作,一个指针指在有字符的位置,另一个指在末尾,从后往前填充,

for(int i=s.length()-1,j = s.length()+5*count-1;i<j;i--,j--){
    if(Character.isDigit(newS[i])){
        newS[j] = 'r';
        newS[j-1] = 'e';
        newS[j-2] = 'b';
        newS[j-3] = 'm';
        newS[j-4] = 'u';
        newS[j-5] = 'n';
        j-=5;
    }else{
        newS[j]= newS[i];
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值