- 博客(22)
- 收藏
- 关注
原创 557.反转字符串中的单词
从字符串开始位置从前向后找' ',pos为find返回的下标位置,再设置一指针pre记录当前pos位置 ,再让pos指向下一个空格,再次用pre记录位置,直到pos为npos(当find找不到时返回npos),此时pos位置时最后一个空格的位置,但后面还有一个单词没有反转,在返回前反转最后一个单词即可。,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
2024-05-15 23:58:38 138
原创 415.字符串相加(leetcode)
解题思路:创建一个新的字符串用来存放相加的结果,从num1和num2的尾部开始相加,判断是否大于10,大于10进位,并把减去10之后的结果放入新的字符串(头插)中,判断下一位即可。注意:当最后进位数如果是1的话,记得把1再次进行头插。你不能使用任何內建的用于处理大整数的库(比如。), 也不能直接将输入的字符串转换为整数形式。,计算它们的和并同样以字符串形式返回。给定两个字符串形式的非负整数。
2024-05-15 12:41:34 235
原创 387.字符串中的第一个唯一字符
解题思路:创建一个数组(注意大小,如果要是a位于数组第一个位置,只需大于26即可,但如果只要相对26字母表顺序,需大于126(打印字符))记录每一个字母出现的次数,记录过后,再次循环,s[i]- 'a' (图1)/s[i](图二)即为对应的字母在arr处的存储位置,判断是否为一即可。它的第一个不重复的字符,并返回它的索引。
2024-05-14 21:47:08 336 2
原创 917.仅仅反转字母(leetcode)
1.双指针法:左右端各设一个指针right和left,让left和right往中间走,如果是字母就交换,不是就跳过(使用循环保证二者一直是字母),注意交换后也要让指针移动,防止一直循环交换这两个字母。
2024-05-14 21:39:13 194 2
原创 类和对象下篇
一、构造函数1.1 构造函数赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值虽然上述构造函数调用后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量的初始化,构造函数体中的语句只能将其称为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。
2024-05-04 14:46:59 520 1
原创 类和对象上篇
classclassName//类体:由成员函数和成员变量构成//注意这里的分号class为定义类的关键字,className为类的名字,{}中的为类的主体,注意类定义结束后后面的分号不能省略。类体中的内容称为类的成员:类中的变量称为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。类的两种定义方式:1.声明和定义全部放在类体中,需注意:成员函数如果在类中定义,编译器可能将其当成内联函数来处理一般情况下,采用分离的形式四、类的访问限定符和封装。
2024-05-02 14:11:11 514 1
原创 C++入门
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员,如下同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中比如说在test.h 和 test.c 里都存在名字叫xy的命名空间,最终二者会进行合并当在同一行声明多个变量时,这些变量必须是相同的类型,否则编译器将会报错,因为编译器实际只对第一个类型进行推导,然后用推导出来的类型定义其他变量。
2024-05-02 11:39:51 1105 1
原创 队列实现详解
队列也是一种数据结构,用来储存数据,其特点是一端进,从另一端出,按顺序排队是一种公平的数据结构,从队尾进入,从队头出去那么用数组还是用链表实现呢?数组:不管那端当作队头/队尾,总要进行大规模的数据挪动,5分链表:链表头当队头,头删出数据 链表尾当队尾,尾插进数据既然用链表,我们会发现单链表已经够用啦,甚至不用带哨兵位,太多会增加维护成本哒尾插进数据,我们每次都要循环找尾节点,不如提前设置好。现在我们要实现一些功能如下。
2024-04-06 17:05:14 450 1
原创 栈实现详解
栈也是一种数据结构,符合后进先出、在同一端进出的原则,像羊肉串一样,今天我们就来实现栈和其相关功能。要实现后进先出,我们可以使用链表也可以使用数组,哪种更好呢如果要用链表实现,则需要进行尾部删除与尾部插入,不难,8分如果用数组实现,则只需要充足的空间即可,代价更小,9分接下来我将用数组实现栈的初始化、销毁、入栈、出栈、找出栈顶元素、获取战中有效数据个数、检查栈是否为空功能。
2024-04-03 17:39:30 455 1
原创 leetcode练习(4.2)
对于一个链表,请设计一个时间复杂度为O(n),额外空间复杂度为O(1)的算法,判断其是否为回文结构。,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回。,请返回一个bool值,代表其是否为回文结构。保证链表长度小于等于900。,函数返回结果后,链表必须。整个链式结构中不存在环。给你两个单链表的头节点。给定一个链表的头指针。
2024-04-02 18:42:54 624 1
原创 LeetCode 练习(3.27-3.31)
题解:只需要把val元素覆盖即可。把不是val的元素保留下来,是val的元素被不是的元素覆盖。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。最终,合并后数组不应由函数返回,而是存储在数组。不要使用额外的数组空间,你必须仅使用。的元素,并返回移除后数组的新长度。个元素表示应合并的元素,后。中,使合并后的数组同样按。,请你删除链表中所有满足。给你一个链表的头节点。
2024-03-27 23:35:00 944
原创 带头双向循环链表详解(图文讲解)
用NULL吗,显然不合理,因为它是循环的,所以目前他的prev指针与next指针指向的都是自己,基于此,我们对其进行初始化。首先来创建一个新节点,这个节点有数据域和指针域,不同的是它包含两个指针,一个指向下一个节点(next),一个指向上一个节点(prev)我们只需要更改结构体中next与prev的指向,不需改变头节点plist的指向,所以我们不需要传递二级指针。可以明显发现,在一个节点中,双向链表比单向多了一个指针,这个指针指向前一个结点。这里注意了,不能删除头节点,头结点处没有数据。
2024-03-24 22:15:52 878 3
原创 单链表详解(不带头单向不循环链表)
链表也是线性表的一种,其结构特征是在逻辑结构上是连续的,但在物理结构上不是连续的。链表的组成是由一个一个的节点组成的。单个节点内有要储存的数据以及指向下一个结点的指针,即数据域与指针域。链表中每个节点都是独立申请的(即需要插入数据时才去申请⼀块节点的空间),我们需要通过指针变量来保存下⼀个节点位置才能从当前节点找到下⼀个节点。如图所示结合前面我们所学习的结构体的知识,给出每个节点所对应的结构体代码。假设当前保存的数据类型是SLDataType型。
2024-03-24 15:47:44 1369 1
原创 顺序表详解(为后续通讯录项目做准备)
顺序表是线性表的一种,其物理结构上与逻辑结构上都是线性的。其底层结构是数组,通过对数组的封装,实现了常用的增删查改等接口三.实现顺序表3.1 静态顺序表与动态顺序表数组有固定大小的,也可以通过动态内存管理来调整数组空间的大小,就分为静态顺序表和动态顺序表,考虑到对空间的利用率,一般使用动态顺序表。
2024-03-14 23:36:04 903 1
原创 c语言中scanf、printf/fscanf、fprintf/sscanf、sprintf
可以看到,fscanf比scanf只多了一个参数->流,因为scanf是针对标准输入(键盘)的格式化输入函数,fscanf是针对所有输入流的格式化输出函数。fprintf与printf也是同理,printf是针对标准输出(屏幕)的格式化输出函数,fprintf是针对所有输入流的格式化输出函数。可以说fprintf与fscanf包含了scanf与printf的功能。--sscanf与sprintf。在字符串中读取一个格式化的数据。把格式化的数据转化成字符串。
2024-03-11 11:22:16 256 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人