字符串
kkkkuuga
这个作者很懒,什么都没留下…
展开
-
leetcode1047. 删除字符串中的所有相邻重复项
1.题目描述:给出由小写字母组成的字符串S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。在S上反复执行重复项删除操作,直到无法继续删除。在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。2.使用栈:刚开始写的时候用了两个栈,用来入栈与出栈。。。class Solution { public String removeDuplicates(String s) { //借助两个栈 char[] arr = s.toCharArray()原创 2022-05-15 15:14:08 · 197 阅读 · 0 评论 -
leetcode459. 重复的子字符串
1.题目描述:给定一个非空的字符串s,检查是否可以通过由它的一个子串重复多次构成。2.暴力枚举:class Solution { public boolean repeatedSubstringPattern(String s) { int len = s.length(); for (int i = 0; i < len / 2; i++) { int con = len / (i + 1);原创 2022-05-14 12:07:12 · 458 阅读 · 0 评论 -
leetcode28. 实现 strStr()
1.题目描述:实现strStr()函数。给你两个字符串haystack和needle,请你在haystack字符串中找出needle字符串出现的第一个位置(下标从0开始)。如果不存在,则返回-1。2.KMP算法:就是实现String.indexOf(String str),时间复杂度O(m + n)。前缀表减一:class Solution { public int strStr(String haystack, String needle) { if (hay原创 2022-05-13 16:44:12 · 240 阅读 · 0 评论 -
leetcode剑指 Offer 58 - II. 左旋转字符串
1.题目描述:字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。2.较易:class Solution { public String reverseLeftWords(String s, int n) { int len = s.length(); if (len <= n) return s原创 2022-05-12 16:49:04 · 121 阅读 · 0 评论 -
leetcode151. 颠倒字符串中的单词
1.题目描述:给你一个字符串s,颠倒字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将字符串中的单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意:输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中,单词间应当仅用单个空格分隔,且不包含任何额外的空格。2.自己写的解法:双指针/结合栈,不少细节需要注意。class Solution { public String reverseWords(String s)原创 2022-05-12 14:41:46 · 324 阅读 · 0 评论 -
leetcode剑指 Offer 05. 替换空格
1.题目描述:请实现一个函数,把字符串s中的每个空格替换成"%20"。2.使用StringBuilder:也可直接returns.replace("","%20"),也有将字符串扩容,在最后使用双指针开始填充,感觉意义不大。class Solution { public String replaceSpace(String s) { StringBuilder sb = new StringBuilder(); for (int i = 0;...原创 2022-05-12 11:12:40 · 111 阅读 · 0 评论 -
leetcode541. 反转字符串 II
1.题目描述:给定一个字符串s和一个整数k,从字符串开头算起,每计数至2k个字符,就反转这2k字符中的前k个字符。如果剩余字符少于k个,则将剩余字符全部反转。如果剩余字符小于2k但大于或等于k个,则反转前k个字符,其余字符保持原样。2.自己写的解法:从整体考虑需要反转字符串的位置,稍微有点复杂。class Solution { public String reverseStr(String s, int k) { StringBuilder sb = new Str原创 2022-05-11 23:43:40 · 77 阅读 · 0 评论 -
leetcode344. 反转字符串
1.题目描述:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组s的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用O(1)的额外空间解决这一问题。2.双指针:class Solution { public void reverseString(char[] s) { int left = 0; int right = s.length - 1; while (left < right) {原创 2022-05-11 22:19:50 · 148 阅读 · 0 评论 -
leetcode438. 找到字符串中所有字母异位词
1.题目描述:给定两个字符串s和p,找到s中所有p的异位词的子串,返回这些子串的起始索引。不考虑答案输出的顺序。异位词指由相同字母重排列形成的字符串(包括相同的字符串)。2. 基于leetcode242. 有效的字母异位词的暴力解法:class Solution { public List<Integer> findAnagrams(String s, String p) { if (s.length() < p.length()) retur原创 2022-05-08 17:04:26 · 344 阅读 · 0 评论 -
leetcode49. 字母异位词分组
1.题目描述:给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表。字母异位词 是由重新排列源单词的字母得到的一个新单词,所有源单词中的字母通常恰好只用一次。2.字符串排序后作为哈希表的key值:class Solution { public List<List<String>> groupAnagrams(String[] strs) { Map<String, List> map = new HashMa原创 2022-05-07 22:10:58 · 271 阅读 · 0 评论 -
leetcode242. 有效的字母异位词
1.题目描述:给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。注意:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。2.使用哈希表:class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) return false; Map<String, Integer> maps = hel.原创 2022-05-06 22:23:34 · 358 阅读 · 0 评论 -
leetcode844. 比较含退格的字符串
1.题目描述:给定s和t两个字符串,当它们分别被输入到空白的文本编辑器后,如果两者相等,返回true。#代表退格字符。注意:如果对空文本输入退格字符,文本继续为空。2.使用StringBuilder普通解法:class Solution { public boolean backspaceCompare(String s, String t) { return helper(s).equals(helper(t)); } public Str.原创 2022-04-16 12:28:36 · 137 阅读 · 0 评论