前言
今天是寒假LeetCode刷题打卡的第十七天,也是本次跟随DataWhale组队学习刷题的最后一天,希望我的这一系列刷题博文帮助到了大家,若有疑问,可以随时私信Call我!
一、344. 反转字符串
1. 题目描述
2. 代码实现
class Solution {
public void reverseString(char[] s) {
int j;
int length=s.length;
for(int i=0;i<length/2;++i)
{
j=length-1-i;
//用位运算的方法实现两个数据的交换
s[i]=(char)(s[i]^s[j]);
s[j]=(char)(s[i]^s[j]);
s[i]=(char)(s[i]^s[j]);
}
}
}
二、557. 反转字符串中的单词 III
1. 题目描述
2. 代码实现
class Solution {
public String reverseWords(String s) {
int length=s.length();
StringBuffer res=new StringBuffer();
int pre=0;
int j,k,judge;
char temp;
for(int i=0;i<s.length();++i)
{
res.append(s.charAt(i));
if(s.charAt(i)==' '||res.length()==length)
{
judge=(i-pre)/2+pre;
if(res.length()==length)
judge=(i+1-pre)/2+pre;
for(j=pre;j<judge;++j)
{
k=i-1-j+pre;
if(res.length()==length)
++k;
temp=res.charAt(j);
res.setCharAt(j,res.charAt(k));
res.setCharAt(k,temp);
}
pre=i+1;
}
}
return res.toString();
}
}
注:记录每一个空格的位置,遇到空格时,对本空格和上一个空格之间的内容(即单词)进行反转。由于java中String类型的字符串不可更改,因此采用到了StringBuffer。
总结
以上就是今天 LeetCode寒假刷题 Day17 做的本次组队刷题的最后两道题。虽然课程已经结束,但是我也不会荒废下去, 学习新的知识,空闲时候也还是会继续刷题。若有任何疑问,欢迎私信或评论区留言鸭!