string
我要上岸!!!
这个作者很懒,什么都没留下…
展开
-
LeetCode 38 Count and Say
思路字符串处理。遇到连续相同的数字就接着寻找下去(i+1 < len && s[i] == s[i+1]), 否则就将出现次数和字符加到结果字符串里面并且count复原为1,这样count的初始值应该为1,因为无论是否满足上面的条件,都要算一个字符。每一轮都会更新所要搜索的字符串。时间复杂度O(n^2)【最坏情况】空间复杂度O(1)代码class Solution ...原创 2019-10-16 10:16:17 · 150 阅读 · 0 评论 -
LeetCode 28 Implement strStr()
思路在source里逐个字符作为起始点检查是否包含子字符串。注意特殊情况处理:见代码复杂度时间复杂度O(n^2)空间复杂度O(1)代码class Solution { public int strStr(String haystack, String needle) { int srcLen = haystack.length(); int t...原创 2019-06-23 14:40:03 · 78 阅读 · 0 评论 -
LintCode 1380 Log Sorting (LeetCode 937 Reorder Log Files)
思路重写比较器对日志内容为字母的日志进行排序:其中可以调用String的compareTo方法,因为其返回值符合比较器的compare函数的返回值规则。具体实现:首先利用String的indexOf找到第一个空格的位置,然后就可以把原日志分成id与内容两个字符串。然后就可以按照规则进行比较了。主函数的实现:用一个list存字母型日志,方便后面直接调用sort方法排序。倒着遍历所有日志,遇到数...原创 2019-05-19 13:43:13 · 425 阅读 · 0 评论 -
LeetCode 65 Valid Number
思路需要考虑一些cases,以下例来编写该题的算法:+2.5e+5。首先用trim将两端的空格去掉,遇到+/-时单独判断;在判断2.5这种浮点数的时候,只需要统计是.和数字的部分,即sc[1]~sc[3],统计.和数字的个数,小数点只能有一个,数字个数需要大于0,不符合条件的可以直接返回false。然后判断e,后面需要接内容,不能以e结束,所以在这里判断一次:i == len。在最后只需要判断i...原创 2019-04-01 13:53:18 · 77 阅读 · 0 评论 -
LeetCode 527 / LintCode 639 Word Abbreviation
思路根据给定的规则,定义:(1)阶段数组prefix,存放当前字符串的位于的阶段;(2)定义一个保存结果的数组ans,存放当前阶段的缩写;(3)一个hashmap:count,用来记录当前结果ans在整个ans中的出现次数。首先从头遍历一遍整个dict,记录好ans,prefix和hashmap然后定义一个while(true)循环,里面一直更改重复的ans,直到所有的ans都唯一。...原创 2019-04-06 13:36:04 · 366 阅读 · 0 评论 -
LeetCode 12 Integer to Roman
思路由于数字范围是1~3999,因此可以利用记录各个数字区间内的罗马数字字符串,然后在最后直接将每一位取出来:数位分离,组成一个字符串即可。复杂度时间复杂度O(1),空间复杂度O(1)代码public class Solution { /** * @param n: The integer * @return: Roman representation ...原创 2019-03-31 12:24:43 · 75 阅读 · 0 评论 -
LeetCode 163 Missing Ranges
思路题目中的lower和upper都不会出现在给定数组的内部,只会在两端出现。首先将lower与数组第0个元素进行合并,然后再依次向后合并下去,最后将最后一个元素与upper再合并。合并:写一个addRange函数进行合并操作。【注意:有可能会出现int溢出的现象,所以这里有2种方法处理:一个是将addRange的输入参数从int转成long;另一种是在调用addRange之前判断是否可以在...原创 2019-03-30 08:22:00 · 165 阅读 · 0 评论 -
LeetCode 165 Compare Version Numbers
思路字符串根据"."得到每段的数字,依次进行比较即可。follow up:考虑尽可能多的corner case,判断输入的version是否合法。复杂度时间复杂度O(n), 空间复杂度O(1)代码class Solution { public int compareVersion(String version1, String version2) { // C...原创 2019-03-17 14:15:24 · 67 阅读 · 0 评论 -
LeetCode 408 Valid Word Abbreviation
思路遍历abbr字符串,遇到0~9的字符就开始统计计数存到num【corner case:遇到01这种带0前缀的要在这里直接去掉,返回false】,否则就将其与word中对应位置比较是否相同,这里对应位置可以使用一个index来确定:每次遇到非0~9时就移动index = index+num,最后别忘了index还要自增一下。复杂度时间复杂度O(len(abbr)), 空间复杂度O(1)...原创 2019-03-20 14:47:11 · 384 阅读 · 0 评论 -
LeetCode 151 Reverse Words in a String
思路1不用split和trim函数。使用一个stack来从前往后存储单词,最后再依次pop出来即可。复杂度时间复杂度O(n), 空间复杂度O(n)代码class Solution { public String reverseWords(String s) { if(s.length() == 0) return ""; S...原创 2019-03-15 16:19:16 · 137 阅读 · 0 评论