首页 > 其他分享 >LeetCode刷题记录.Day15

LeetCode刷题记录.Day15

时间:2022-11-14 23:34:51浏览次数:61  
标签:单词 slow start int ++ 空格 Day15 LeetCode 刷题

反转字符串中的单词

151. 反转字符串中的单词 - 力扣(LeetCode)

class Solution {
public:
    void reverse(string& s, int start, int end){ //反转单词字符串,写法为左闭右闭,包括start和end
        for (int i = start, j = end; i < j; i++, j--) {
            swap(s[i], s[j]);
        }
    }
    void removeExtraSpaces(string& s) {//去除所有空格并在相邻单词之间添加空格, 快慢指针。
        int slow = 0;   //
        for (int i = 0; i < s.size(); ++i) { //i是快指针,跳过所有空格,只读取非空格数据
            if(s[i] != ' '){
                if(slow != 0) s[slow++] = ' '; //此时i指向新单词的开头,所以slow向前移一位,并且手动补上空格。
                while(i < s.size() && s[i] != ' '){
                    s[slow++] = s[i++];
                }
            }
        }
        s.resize(slow); //slow的大小即为去除多余空格后的大小。
    }

    string reverseWords(string s) {
        removeExtraSpaces(s);
        reverse(s, 0, s.size() - 1); //反转整个字符串
        int start = 0;
        for(int i = 0; i <= s.size(); i++){
            //指向最后或者指向空格
            if(i == s.size() || s[i] == ' '){
                reverse(s, start, i - 1);
                start = i + 1;//跳过空格
            }
        }
        return s;
    }
};

算是阶段性考核了,其实题目用到的方法都是之前的方法,但是很多细节要注意。自己尝试写了写还是很费神而且边写边改越改思路越乱。比如快慢指针去空格时去掉后还需要添加上一个。还有最后挨个单词反转字符串,自己写就漏掉了末尾的单词。

标签:单词,slow,start,int,++,空格,Day15,LeetCode,刷题
From: https://www.cnblogs.com/tianmaster/p/16890932.html

相关文章

  • [Leetcode Weekly Contest]319
    链接:LeetCode[Leetcode]2469.温度转换给你一个四舍五入到两位小数的非负浮点数celsius来表示温度,以摄氏度(Celsius)为单位。你需要将摄氏度转换为开氏度(Kelvin)和华......
  • 洛谷刷题_P1009 [NOIP1998 普及组] 阶乘之和
    题目P1009[NOIP1998普及组]阶乘之和题目链接https://www.luogu.com.cn/problem/P1009知识点求阶乘正常做法:#include<stdio.h>longlongjiecheng(longlongn)......
  • leetcode1346
    检查整数及其两倍数是否存在Category Difficulty Likes Dislikesalgorithms Easy(43.19%) 78 -TagsCompaniesUnknown给你一个整数数组arr,请你检查是否存在两个整数......
  • leetcode1337
    矩阵中战斗力最弱的K行Category Difficulty Likes Dislikesalgorithms Easy(70.39%) 190 -TagsCompanies给你一个大小为m*n的矩阵mat,矩阵由若干军人和平民组......
  • leetcode74
    搜索二维矩阵Category Difficulty Likes Dislikesalgorithms Medium(46.78%) 572 -TagsCompanies编写一个高效的算法来判断mxn矩阵中,是否存在一个目标值。该矩阵......
  • 2022/11 LeetCode练习
    ......
  • leetcode 136. 只出现一次的数字 js 实现
    给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。你可以不使用额外空间来......
  • 2022.11.14 No.2 Leetcode
    重庆昨天新增已经破2000。晚上回去研究了一下家里老台式改服务器的可行性,感觉问题不大,就是可能要给家里换组电力猫了。今天降温了,要不是寝室里有个从早到晚......
  • [leetcode每日一题]11.14
    ​​805.数组的均值分割​​​给定你一个整数数组 ​​nums​​我们要将 ​​nums​​​ 数组中的每个元素移动到 ​​A​​​ 数组或者 ​​B​​​ 数组中,使得 ......
  • [LeetCode] 805. 数组的均值分割
    设变量sum:数组的和,n:数组元素个数,tot:子数组和,cnt:子数组元素个数通过简单的公式变换可以得到:sum/n=tot/cntsum/n的值是确定的,所以也就是需要找到一个子数......