344.反转字符串
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:0.5h
思路:从字符串左右两边向中间遍历,依次交换两边字符。
代码:
541. 反转字符串II
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1h
思路:字符串长度可以表示为,遍历字符串的时候,步进为2k,当当前位置,表示处于n个2k中的某一个或者b大于k小于2k,则翻转前k个;反之,则表示处于b,且b小于k,则翻转剩余所有的字符。
代码:
剑指Offer 05.替换空格
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:1h
思路:先计算空格个数,扩张字符串长度,然后从后往前遍历数组,用新旧两个指针,新的指针指向扩张后字符串末尾,旧指针指向扩张前末尾,旧指针指向字符时,将旧指针的值赋给新指针的位置,当旧指针指向空格时,新指针连续赋值为"%20"。
代码:
151.翻转字符串里的单词
文档和视频讲解:代码随想录(programmercarl.com)
状态:未ac
用时:1.5h
思路:先反转整个字符串,这样字符串的顺序是反的,但是每个单词的顺序也是反的,接下来就只需要遍历字符串,把每个单词识别然后反转该单词。也可以先双指针将所有多余空格删除,再进行两遍翻转。
代码:
注:关键是每个单词之间加入空格的逻辑比较难。是每次识别到单词之前加入还是单词之后加入,图片中我注释的那一行是单词之后加入。单词之前加入只需要注意开头的单词之前不要加入空格就行了,识别第一个单词的逻辑只需要知道idx是否等于0。但是在每个单词之后加入空格,就要知道是否是最后一个单词,这不能通过idx是否等于n-1判断,因为如果字符串最后一个单词和字符串末尾之间有多个空格,那么判断的逻辑就会变得复杂,要一直判断到末尾都是空格才行。
剑指Offer58-II.左旋转字符串
文档和视频讲解:代码随想录(programmercarl.com)
状态:ac
用时:0.5h
思路:先翻转整个字符串,再分别翻转两个子字符串。
代码: