首页 > 其他分享 >代码随想录刷题学习日记

代码随想录刷题学习日记

时间:2024-10-15 13:52:40浏览次数:10  
标签:单词 slow 随想录 空格 字符串 刷题 日记 指针

仅为个人记录复盘学习历程,解题思路来自代码随想录

代码随想录刷题笔记总结网址:
代码随想录

替换数字

给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。

提供参数:string s

主要操作:

将数组扩容到所有数字都换成number的容量

使用双指针法,两指针i,j,一指针i指向新数组末尾,一指针j指向原数组末尾

当j<i时,进行如下循环操作:

判断j指针指向是否为数字,

若不是数字,s[i]=s[j];

若是数字,s[i]依次向前填充r,e,b,m,u,n(i,j指针都是从后往前)

i--,j--;

简单模拟,主要是使用双指针进行写操作,和两指针从后往前移动

151.翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。如:

输入:s = "the sky is blue"
输出:"blue is sky the"

返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。

提供参数:String s

主要操作:

使用双指针(快慢指针)除去多余空格:

1.字符串前空格

2.字符串中不同单词间空格大于1

3字符串尾空格

快指针fast,慢指针slow

快指针先排除字符串前的空格(fast指针移动到字符串第一个字符)

当fast指针指向最后一个字符前,重复进行以下操作:

判断是否为连续空格,

若是,continue;

若不是,s[slow++]=s[fast]

由于循环中的判断,当执行完循环后,若源字符串后有空格,则新字符串后一定知存在一个空格(排除连续空格操作),且slow指针指向该空格后一个位置(slow++导致的)

反转整个字符串(此时单词也反转了)

按空格反转单词(将单词恢复)

总体简单,主要操作应该在双指针去除额外空格,可以用别的方法,但是这个方法时间复杂度低(O(n))

这道题一开始我的想法是用空格来分割单词,然后简单交换单词就行,但是和代码随想录里说的一样,这么做这题好像没什么必要,得不到练习。

标签:单词,slow,随想录,空格,字符串,刷题,日记,指针
From: https://blog.csdn.net/weixin_73939095/article/details/142938043

相关文章

  • 代码随想录训练营第63天|拓扑排序
    117.软件构建#include<iostream>#include<vector>#include<queue>#include<unordered_map>usingnamespacestd;intmain(){intm,n,s,t;cin>>n>>m;vector<int>inDegree(n,0);//记录每个文件的入度......
  • 代码随想录训练营第62天|最小生成树
    53.寻宝#include<iostream>#include<vector>#include<climits>usingnamespacestd;intmain(){intv,e;intx,y,k;cin>>v>>e;//填一个默认最大值,题目描述val最大为10000vector<vector<int>>grid(v+1......
  • Leetcode刷题
    本题思路:采用线性枚举,遍历数组暴力解题分析:首先我们定义两个变量p和count,p用来记录0之前1的个数,例如在示例1中我们的p遍历完数组后的值先为2,遇到0断开,将p重新变为0,之后值为3。而count则记录最长1有几个,在第一次中p等于2,此时count也等于2,当p重新为0时,count还是等于2......
  • 【日记】可以不用考了,感觉铁过不了(413 字)
    正文可能是上午睡了一整个上午,中午直接睡不着了。不知道为什么,上午特别困,给主管说了一声,去隔壁休息室里开躺。有业务时又出来,脑袋晕晕的。办完又回去睡觉了。中午玩了会儿,打过了劫波,开始探小雷音寺。下午做了一套经济师经济基础知识的卷子,单选题70道,错了34道......
  • LeetCode刷题日记之回溯算法(四)
    目录前言非递减子序列全排列全排列II总结前言今天是学习回溯算法的第四天,我们继续来一起学习回溯算法蕴含的逻辑处理,希望博主记录的内容能够对大家有所帮助,一起加油吧朋友们!......
  • 代码随想录算法训练营day15| 110.平衡二叉树 257.二叉树的所有路径 404.左叶子之和
    学习资料:https://programmercarl.com/0110.平衡二叉树.html#算法公开课平衡二叉树:任意一个节点的左右子树高度差不超过1左叶子:是叶子节点,且是其父节点的左节点完全二叉树:上层均满,底层的节点从左到右连续满二叉树:每层都是满的,节点总数为(2^k+1)语法:2<<1是2^2学习记录:1......
  • 代码随想录算法训练营 | 121.买卖股票的最佳时机,122.买卖股票的最佳时机II,123.买卖股
    121.买卖股票的最佳时机题目链接:121.买卖股票的最佳时机文档讲解︰代码随想录(programmercarl.com)视频讲解︰买卖股票的最佳时机日期:2024-10-14想法:经常有用0和1表示相反状态,dp[i][0]表示第i天持有股票时身上最多的钱,比如第一天股票5元,持有了,身上的钱就为dp[0][0]=-5,第二天股......
  • 代码随想录算法训练营第三十四天|134. 加油站 135. 分发糖果 860.柠檬水找零 406.根据
    134.加油站在一条环路上有 N 个加油站,其中第 i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。如果你可以绕环路行驶一周,则返回出发时加油站的......
  • 代码随想录算法训练营第三十二天|122.买卖股票的最佳时机 II 55. 跳跃游戏 45.跳跃游
    122.买卖股票的最佳时机II给定一个数组,它的第 i个元素是一支给定股票第i天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。示例1:输入:[7,1,5......
  • 代码随想录算法训练营第三十一天|455.分发饼干 376. 摆动序列 53. 最大子序和
    455.分发饼干假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。对每个孩子i,都有一个胃口值 g[i],这是能让孩子们满足胃口的饼干的最小尺寸;并且每块饼干j,都有一个尺寸s[j] 。如果s[j] >=g[i],我们可以将这个饼干j分配给孩子i,......