算法
Antarcticc
这个作者很懒,什么都没留下…
展开
-
移除重复节点
移除重复节点编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1: 输入:[1, 2, 3, 3, 2, 1] 输出:[1, 2, 3] 示例2: 输入:[1, 1, 1, 1, 2] 输出:[1, 2]题解对给定的链表进行一次遍历,并用一个哈希集合(HashSet)来存储所有出现过的节点。从链表的头节点 head 开始进行遍历,遍历的指针记为 pos。由于头节点一定不会被删除,因此直接放入set集合里面。定义指针表示当前节点的下一个节点,判断是否存在集合中原创 2021-10-24 15:39:12 · 110 阅读 · 0 评论 -
程序员面试金典:回文排列
回文排列给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。 回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:"tactcoa"输出:true(排列有"tacocat"、"atcocta",等等)题解一个回文串的排列不可能包含超过一个“出现奇数次的字符”,用哈希表记录字符的个数。再判断即可。代码展示// 使用散列表记录字符的个数public boolean canPermutePalindrome(Str原创 2021-10-13 19:53:05 · 71 阅读 · 0 评论 -
程序员面试金典:URL化
URL化URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例 1:输入:"Mr John Smith ", 13输出:"Mr%20John%20Smith"示例 2:输入:" ", 5输出:"%20%20%20%20%20"题解方法一:使用StringBuilder解决,逐渐遍历字符串中的字符,如果原创 2021-10-11 21:54:38 · 76 阅读 · 0 评论 -
程序员面试金典:判定是否互为字符重排
判定是否互为字符重排给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。示例 1:输入: s1 = "abc", s2 = "bca"输出: true 示例 2:输入: s1 = "abc", s2 = "bad"输出: false题解本题要求判断给定的两个字符串是否是重排的关系。首先,我们要正确理解重排的含义。确定其中一个字符串的字符重新排列后,能否变成另一个字符串,根据这个定义检查字符串。互为重排的两个字符串有两个原创 2021-10-09 22:51:52 · 381 阅读 · 0 评论 -
程序员面试金典:判定字符是否唯一
判定字符是否唯一实现一个算法,确定一个字符串 s 的所有字符是否全都不同。示例 1: 输入: s = "leetcode"输出: false 示例 2: 输入: s = "abc"输出: true题解思考字符串的的字符范围?字符串是 ASCII 字符串(128个可能性)还是 Unicode 字符串如果是unicode,没有字符范围,老老实实排序再判断是比较符合要求的,因为算法性能稳定,没有额外资源要求。代码展示// 方法一:使用boolean数组的做原创 2021-10-09 22:50:54 · 147 阅读 · 0 评论