Leetcode刷题Day8-------------字符串
创始人
2024-04-13 16:16:49
0

Leetcode刷题Day8-------------字符串

1. 反转字符串 (344)

  • 题目链接:
  • 文章讲解/视频讲解:https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html

双指针 或者 for+单指针 都可

class Solution {public void reverseString(char[] s) {int right=s.length-1;for(int i=0;ichar temp=s[i];s[i]=s[right];s[right]=temp;right--;}}
}

2. 反转字符串II (541)

  • 题目链接:https://leetcode.cn/problems/reverse-string-ii/
  • 文章讲解/视频讲解:https://programmercarl.com/0541.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2II.html
    重点:
  1. 题目要求每次只翻转k个,然后k个不翻转,这样为一轮---------------->一轮有2k个,所以用for循环来控制
  2. 题目要求如果最后一轮的一半不到k个,就都翻转,如果够K个就反转k个----------->right 的判定:Math.min(ch.length - 1, start + k - 1);
  3. 库函数:s为 String类型-------> char[] ch = s.toCharArray();
//解法二(似乎更容易理解点)
//题目的意思其实概括为 每隔2k个反转前k个,尾数不够k个时候全部反转
class Solution {public String reverseStr(String s, int k) {char[] ch = s.toCharArray();for(int i = 0; i < ch.length; i += 2 * k){//以下与上题道理相同//这里是判断尾数够不够k个来取决end指针的位置int right=Math.min(ch.length-1,i+k-1);for(int j=i;jchar temp=ch[j];ch[j]=ch[right];ch[right]=temp;right--;}}return new String(ch);}
}

3. 替换空格 (剑指Offer 05)

  • 题目链接/文章讲解:https://programmercarl.com/%E5%89%91%E6%8C%87Offer05.%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC.html

重点:
转为StringBuilder 追加

class Solution {public String replaceSpace(String s) {StringBuilder sb=new StringBuilder();for(int i=0;iif(s.charAt(i)==' ') sb.append("%20");else sb.append(s.charAt(i));}return sb.toString();}
}

4. 翻转字符串里的单词(151)

  • 题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/
  • 文章讲解/视频讲解:https://programmercarl.com/0151.%E7%BF%BB%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%87%8C%E7%9A%84%E5%8D%95%E8%AF%8D.html

5. 左旋转字符串 (剑指Offer58-II)

  • 题目链接:
  • 文章讲解:https://programmercarl.com/%E5%89%91%E6%8C%87Offer58-II.%E5%B7%A6%E6%97%8B%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html

还是 整体旋转+局部旋转!
步骤

  1. 反转区间为前n的子串
  2. 反转区间为n到末尾的子串
  3. 反转整个字符串

注意:处理好调用时的参数-----------> 需要-1,因为含头含尾

class Solution {public String reverseLeftWords(String s, int n) {s=reversString(s,0,n-1);s=reversString(s, n, s.length()-1);s=reversString(s,0,s.length()-1);return s;}public String reversString(String s, int start, int end){char[] ch=s.toCharArray();for(int i=start;ichar temp=ch[i];ch[i]=ch[end];ch[end]=temp;end--;}return new String(ch);}
}

相关内容

热门资讯

新还珠格格,欣荣和永琪有个孩子... 新还珠格格,欣荣和永琪有个孩子?不是说永琪从来都没碰过她吗?绵忆到底是他和小燕子的还是欣荣的啊求正解...
中级会计怎么备考?今年几月考试... 中级会计怎么备考?今年几月考试?您好,很高兴为您解答中级会计师考试,教材是根本和基础,所有的题目都是...
继兴业、招商、中信后,邮储银行... (来源:现代商业银行杂志)金融资产投资公司(AIC)队伍再添新员。邮储银行近日发布公告称,该行拟以自...
中央巡视组对陕西开展两个半月常... 转自:北京日报客户端日前,中央第十五巡视组进驻陕西省,将开展为期两个半月左右的常规巡视,并会同陕西省...
柳州幻境空间在哪里 柳州幻境空间在哪里柳州幻境空间是位于广西柳州市城中区华联商闷郑城4楼的室内主题乐园,提供了各种游戏和...
中央巡视组进驻山东 联动巡视济... 转自:央视新闻客户端经党中央批准,二十届中央第六轮巡视将对16个省(自治区、直辖市)开展常规巡视,并...
继续发布暴雨蓝色预警!北京等地... 转自:央视新闻客户端中央气象台19日早6时继续发布暴雨蓝色预警。预计,19日早8时至20日早8时,青...
降妖伏魔篇演员有哪些 降妖伏魔篇演员有哪些文章舒淇程小东黄勃
晚上十一点在河边抓鱼听到有人叫... 晚上十一点在河边抓鱼听到有人叫我小名声音跟我一个朋友一样,电筒照却没有发现有人而且我女朋友也听见了不...
属猴的为什么吸引属狗的人 属猴的为什么吸引属狗的人属相狗虽不善甜言蜜语,为人多有情感之被捉,然其铅轮内心却多有向往甜蜜幸福之生...