[LintCode] 1. strStr

原创 2015年11月18日 18:09:02

LintCode Ladder 1 - strStr

1. strStr (LeetCode 28)

For a given source string and a target string, you should output the first index(from 0) of target string in source string.
If target does not exist in source, just return -1.

for循环做法(from LintCode Solution)

class Solution {
    public int strStr(String source, String target) {
        if (source == null || target == null) {
            return -1;
        }

        if (target == "") {
            return 0;
        }

        for (int i = 0; i < source.length() - target.length() + 1; i++) {
            for (int j = 0; j < target.length(); j++ ) {
                if (source.charAt(i + j) != target.charAt(j)) {
                    break;
                }

                if (j == target.length() - 1) {
                    return i;
                }
            }
        }
        return -1;
    }
}

2. Subsets (LeetCode 78)

Given a set of distinct integers, return all possible subsets.

非递归做法(from Code Ganker):
对于res,把之前已经加入进res的每个item,都再加上新的元素,组成集合,加入res里

class Solution {
    public ArrayList<ArrayList<Integer>> subsets(int[] S) {  
         ArrayList<ArrayList<Integer>> res = new  ArrayList<ArrayList<Integer>>();  
         res.add(new ArrayList<Integer>());  
         if(S == null || S.length == 0)  
            return res;  
        Arrays.sort(S);  
        for(int i=0;i<S.length;i++)  
        {  
            int size = res.size();  
            for(int j=0;j<size;j++) //先从里层的for循环写起,再套上外层
            {  
                ArrayList<Integer> item = new ArrayList<Integer>(res.get(j));  
                item.add(S[i]);  
                res.add(item);  
            }  
        }  
        return res;  
    }  
}

递归做法(from LintCode Solution):
经典DFS问题,对于输入里的每一个元素,都放到子集合,添加元素,添加进res,如果后面还有元素,接着添加元素,添加进res,再backtrack

class Solution {
    public ArrayList<ArrayList<Integer>> subsets(int[] num) {
        ArrayList<ArrayList<Integer>> res = new ArrayList<ArrayList<Integer>>();
        ArrayList<Integer> item = new ArrayList<Integer>();

        if(num == null || num.length == 0) {
            return res;
        }

        Arrays.sort(num);  
        subsetsHelper(res, item, num, 0);

        return res;
    }

    private void subsetsHelper(ArrayList<ArrayList<Integer>> res,
        ArrayList<Integer> item, int[] num, int pos) {

        res.add(new ArrayList<Integer>(item));

        for (int i = pos; i < num.length; i++) {
            item.add(num[i]); 
            subsetsHelper(res, item, num, i + 1);
            item.remove(item.size() - 1);
        }
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

lintcode之strStr

1.问题描述: 2. java解法 2.1 strStr.java /** * * @author xin_wang * @2016-6-23 */ publi...
  • wxcsu0802
  • wxcsu0802
  • 2016年06月23日 16:56
  • 298

LintCode 字符串查找

字符串查找(又称查找子字符串),是字符串操作中一个很有用的函数。你的任务是实现这个函数。 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 ...
  • susser43
  • susser43
  • 2015年07月01日 16:01
  • 1272

[LintCode] 1. strStr

LintCode Ladder 1 - strStr1
  • fredangelin
  • fredangelin
  • 2015年11月18日 18:09
  • 114

LintCode 字符串查找(暴力法+KMP)

URL:http://www.lintcode.com/zh-cn/problem/strstr/ 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符...
  • thinkerleo1997
  • thinkerleo1997
  • 2017年10月07日 16:31
  • 1831

(lintcode)第13题字符串的查找

要求:对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。 样例 如...
  • Aphysia
  • Aphysia
  • 2017年08月29日 12:57
  • 275

*[Lintcode]strStr

For a given source string and a target string, you should output thefirst index(from 0) of target st...
  • jc69186918
  • jc69186918
  • 2016年04月26日 22:36
  • 183

LintCode之字符串置换

给定两个字符串,请设计一个方法来判定其中一个字符串是否为另一个字符串的置换。置换的意思是,通过改变顺序可以使得两个字符串相等。 “abc” 为 “cba” 的置换。 “aabc” 不是 “abcc...
  • JinKe_
  • JinKe_
  • 2017年08月02日 14:09
  • 224

LintCode 字符串查找

对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。 您在真实...
  • Hk_john
  • Hk_john
  • 2017年03月16日 22:40
  • 214

(lintcode)第1题 A+B问题

给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符 说明 a和b都是 32位 整数么?是的 我可以使用位运算符么?当然可以 样例 如果 a=1 并且 b=2,返回3 ...
  • Aphysia
  • Aphysia
  • 2017年08月23日 16:58
  • 684

llintcode python——字符串查找

字符串查找(查找子字符串) 问题描述:问题描述:对于一个给定的 source 字符串和一个 target 字符串,你应该在 source字符串中找出 target 字符串出现的第一个位置(从0开始)...
  • SEMPERFI_5407
  • SEMPERFI_5407
  • 2017年02月11日 15:12
  • 343
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LintCode] 1. strStr
举报原因:
原因补充:

(最多只允许输入30个字)