字符串
Peanut_X
这个作者很懒,什么都没留下…
展开
-
字符串:删除若干字符的最长串
给定一个字符串s和一个词典d,找出d中可以由s删除若干字符而得到,最长且按字母排序最靠前的字符串。如s = "abpcplea",d = ["ale","apple","monkey","plea"],则返回"apple"。 方法一:两个字符串从前往后遍历,如果字典里的字符串str所有字符在字符串s中按顺序出现,那么说明str可以由s删除若干字符后得到。记录满足最长且首字母原创 2018-04-01 18:29:12 · 446 阅读 · 0 评论 -
字符串:重组
给定一个字符串,要求对其进行重组,使相同的字符不相邻,如果无法满足要求,则返回空串。如字符串“aab”,重组后为“aba”。 分析:先统计每个字符出现的次数,把字符和次数存入HashMap中,对HashMap根据次数进行排序,然后再进行重组:前一半append,后一半间隔插入。(其实也可以不用排序,只需找到出现次数最多的那个字符,先append该字符即可) public Str...原创 2018-04-01 18:57:02 · 1043 阅读 · 0 评论 -
字符串:判断子串
给定两个数组s和t(只包含小写字母),判断s是否为t删除若干字符后得到的子串。 若单纯判断是否为子串,过程比较简单,只需要设置两个指针。 public boolean isSubsequence(String s, String t) { int is = 0, it = 0; while(is < s.length() &&...原创 2018-04-17 21:17:04 · 6335 阅读 · 0 评论 -
字符串:压缩
给定一个字符串,对字符串进行压缩,返回压缩后的长度,并把压缩后的字符存入原字符串的前面部分。如字符串['a', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'b', 'c', 'c', 'd'],压缩后的结果为ab12c2d,返回长度为7,把压缩结果存入原字符串后的结果为ab12c2dbbbbbbccd。 public...原创 2018-05-08 22:01:25 · 403 阅读 · 0 评论 -
字符串:二进制加法
给定两个表示二进制数字的字符串,求它们的和,用二进制表示。如a = "1010", b = "1011",则和为"10101"。 方法一:直接对字符串进行二进制计算。 public String addBinary(String a, String b) { int i1 = a.length() - 1, i2 = b.length() - 1, carry ...原创 2018-05-03 21:43:58 · 2319 阅读 · 0 评论 -
字符串:实现indexOf
实现String的indexOf功能:给定一个haystack和一个needle,返回needle在haystack中第一次出现的index,如果不出现,则返回-1(如果needle为空,则返回0)。如haystack = “hello”,needle = “ll”, 则返回2. 一种“优雅的方法”:public int strStr(String haystack, String ...原创 2018-05-05 13:29:14 · 292 阅读 · 0 评论 -
字符串:连续对称二进制子串
给定一个由“0”和“1”组成的字符串,计算其中包含相同个数的0和1,且相同数字毗邻的子串个数。如字符串“00110011”,满足要求的子串有:01,10,01,0011,1100,0011,共6个。对于字符串“10101”,满足要求的子串有:10,01,10,01,共4个。 方法一:找到所有的“01”和“10”,再计算两边连续的“0”和“1”的个数,然后计算满足要求的子串个数。 ...原创 2018-05-07 23:58:24 · 457 阅读 · 0 评论 -
子串相关问题
子串相关的问题直观的解法通常时间复杂度都比较高。如下模板可以借鉴解决很多相关问题:int findSubstring(string s){ vector<int> map(128,0); int counter; // check whether the substring is valid int begin=0, end...原创 2019-02-22 11:21:30 · 410 阅读 · 0 评论