- 博客(41)
- 收藏
- 关注
原创 1071.字符串的最大公约数
首先确定上界:通过求len1和len2的最大公约数得到的d,如果这d个字符重复不同次数后能够得到s1和s2,那么上界就是d个字符。假设最长公共字符串长度为d,则字符串1长度可表示为len1=d x m,字符串2长度可表示为len2=d x n;通过求len1 and len2的最大公约数d,如果d重复不同次数后能够得到s1 and s2,那么前d个字符就是最长公共字符串。假设存在更短的d1(d1<d),d1重复不同次数后可以得到s1 and s2,那么d1不就是公约数吗?显然不可能存在这种情况。
2025-11-27 17:36:48
178
原创 929.独特的电子邮件地址
convertemail 函数中 malloc 分配的 ans 字符串,在 insert 后未被 free(insert 中用 strdup 复制了 key,原 ans 成为孤儿指针)。哈希表 emails 中的节点(struct hashcode)及 key 字符串,在函数结束后未被释放,导致内存泄漏。1.flag1(+ 位置)未处理 “无 + 号” 的情况;该程序已经能运行,但是由于内存泄露问题,导致结果有误。初始版程序(未参考任何信息,自创)第二版程序:未修改内存泄露问题。未考虑域名中有+情况。
2025-11-19 17:09:57
172
原创 884.两句话中的不常见单词【结构体-find&add&iter&del】
【代码】884.两句话中的不常见单词【结构体-find&add&iter&del】
2025-11-16 16:16:17
111
原创 804.唯一的摩尔斯密码词(uthash)
心得:思路没有问题,但是没有建立hash的解题想法,导致开始写的代码很复杂。利用hash键唯一性,自动去重,可以更高效实现个数统计。
2025-11-09 15:27:12
110
原创 另一棵树的子树
题目:给你两棵二叉树 root 和 subRoot。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true;否则,返回 false。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。
2025-11-02 13:35:19
139
原创 反转字符串II
参考官方:实际上就是每当下标是2k的整数倍(0,1…),反转其后的k个字符。如果不足2k,则反转min(k,len-i)个字符。方法一:自编,显得很蠢。
2025-10-31 13:11:31
204
原创 500.键盘行
设置每一行标志位flag1、flag2、flag3,通过判断三者和与1的关系来决定当前字符串是否满足题意。将每一行字符的大小写连接为一个字符串保存为一个字符数组中,作为strchr()函数查找源;
2025-10-29 17:08:26
182
原创 459.重复的子字符串(周期字符串的判定)
原本在思考 将基本周期内字符串存储到数组,后续要判断的字符串也存储到一个数组,但是这样会浪费内存且麻烦。可以用strcmp(s,s+i,k)方式解决。我们将两个 s 连在一起,并移除第一个和最后一个字符。如果 s 是该字符串的子串,那么 s 就满足题目要求。个人思路:找到基本周期,然后判断后面字符串是否和基本周期字符串一致。参考官方:周期函数f(x)=f(x-T)参考官方,利用拼接字符串,巧妙寻找。参考官方,引入KMP算法。判断字符串是否有周期性。
2025-10-28 22:01:52
205
原创 判断子序列
官方答案:思路一致,即贪吃算法,依次判定,直到,判定完s中所有字符或者在t中未找到字符为止。个人程序:复杂利用两个循环实现。官方答案:预处理方式优化时间。
2025-10-23 16:40:05
176
原创 389.找不同
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。给定两个字符串 s 和 t ,它们只包含小写字母。第一版程序:算频次,矛盾点:两者频次不相等。请找出在 t 中被添加的字母。参考官方代码,利用位的异或运算。参考官方代码:利用求和 做差。
2025-10-23 14:54:28
173
原创 同构字符串
维护两张哈希表,第一张哈希表 s2t 以 s 中字符为键,映射至 t 的字符为值,第二张哈希表 t2s 以 t 中字符为键,映射至 s 的字符为值。从左至右遍历两个字符串的字符,不断更新两张哈希表,如果出现冲突(即当前下标 index 对应的字符 s[index] 已经存在映射且不为 t[index] 或当前下标 index 对应的字符 t[index] 已经存在映射且不为 s[index])时说明两个字符串无法构成同构,返回 false。第一版程序:没看懂题目,参考官方对题目的解答,利用简单哈希表实现。
2025-10-21 16:25:51
202
原创 有效的字母异位词
第一版程序:利用两个for循环,同时分别统计s[i]字符在s和t中的频次,统计完后比较是否一致,不一致直接返回false。但是时间复杂度过高,不符合时间要求。参考官方,采用哈希表降低时间复杂度。
2025-10-21 15:16:10
188
原创 Excel表列名称
利用取余数得到每个字符,利用取商得到下一位的输入。但是要注意有一个特例:26的整倍数,需要减去最低位的26,才能进行取商。第二版:参照官方答案,省去密码本转换函数。且省去求字符数组长度的相关代码,直接定义为8位。官方求解:可应用与关于整数取模相关问题。
2025-10-21 11:31:44
108
原创 验证回文串
第三版程序:参考官方答案,使用库函数isalnum、tolower来实现。第二版程序:转换为小写后,直接首尾开始循环比较。第一版:使用反转字符串来比较相等。
2025-10-20 20:37:00
208
原创 hello world!——第一个程序
创建右键创建TXT文件,后缀名改成java,用notepad++打开代码:public class hello{ public static void main(String[] args){ System.out.print("hello world!"); }}代码解读1.第一行:public class表示类,hello是类名2.第二行:public static void 是修饰符,关键字;main()是方法;String[] args 是参数3.System.out.p
2021-07-06 01:29:47
110
原创 DOS学习
打开cmd方式资源管理器的地址栏路径前面加cmd+空格+回车window+R+cmd管理员方式运行选择以管理员方式运行,可获取最高权限常用DOS命令(英文状态下输入)1.盘符切换(可切换电脑不同盘):如D:+回车2.查看当前目录下的所有文件:dir+回车3.切换目录(change directory):cd+空格+/d+空格+盘名:\目录路径 如:cd /d D:\DOS study4.返回上一级:cd+空格+.. 如:cd ..5.进入下一级:cd+文件名(
2021-07-05 16:57:22
84
原创 Markdown学习
Markdown学习标题:一级:#+空格+回车二级:##+空格+回车三级:###+空格+回车最多支持到六级字体:hello world!hello world!(前后各加两个星号,或者前后各加两个下划线)hello world!(前后各一个星号:斜体)hello world!(前后两个~~)引用:大于号+空格分割线:(如上分割线,三个-)(三个*,效果如上)图片:格式:!+[]+():使用时候,把+去掉,[ ]里面写标题,()里面写图片路径,注意是英文输入状态下
2021-07-05 16:10:16
93
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅