[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...

*[Lintcode]strStr

For a given source string and a target string, you should output thefirst index(from 0) of target st...

lintcode 字符串查找(strStr) (Java)

1.题目 对于一个给定的 source 字符串和一个 target 字符串,你应该在 source 字符串中找出 target 字符串出现的第一个位置(从0开始)。如果不存在,则返回 -1。 2....

模拟实现函数库中的各种常用函数,1实现strcpy 2.实现strcat 3.实现strstr 4.实现strchr 5.实现strcmp 6.实现memcpy 7.实现memmove

————– 1模拟实现strcpy—————strcpy函数是将源字符串复制到目标字符串的函数strcpy函数的思路就是,它是一个字符串,有\0作为结束标志,那么可以用\0作为突破点和条件,具体代码如...

strstr(str1,str2)函数使用时注意事项

通过实际测试,从该函数入手,发现问题,到寻找原因,再到解决问题。从而得出正确使用此函数的经验。 注意事项:在使用或者处理strstr(str1,str2)返回值之前,切记不要对str1字符串进行更改,...

字符串比较函数strncasecmp():比较字符串的前n个字符|字符串查找函数strstr和string.find() 查找字符串str1中是否存在与str2一样的子字符串

C语言strncasecmp()函数:比较字符串的前n个字符 头文件:#include 定义函数:int strncasecmp(const char *s1, const char *s2, ...
  • haiross
  • haiross
  • 2015年05月15日 11:25
  • 3751

lintcode(657)Insert Delete GetRandom O(1)

描述: Design a data structure that supports all following operations in average O(1) time. ins...

Lintcode 用递归打印从1到N位的最大整数

题目要求用递归打印从1到N位的最大整数(十进制),如n=2 返回[1,2,…99]. 实际上这道题是想让我们用全排列的思想分别按位进行递归,每位有0-9这十种可能。然而当用python写的时候不好用...

Lintcode 在O(1)时间复杂度删除链表节点

1.描述 给定一个单链表中的一个等待被删除的节点(非表头或表尾)。请在在O(1)时间复杂度删除该链表节点。 样例 给定 1->2->3->4,和节点 3,删除 3 之后,链表应该变为 1-...

lintcode 整数排序 1和2

package cn.edu.tju.cs.bigdata.chc; public class 整数排序1 { /** * @author 小锦囊 * 冒泡排序 */ publi...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LintCode] 1. strStr
举报原因:
原因补充:

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