LintCode:最小子串覆盖

给定一个字符串source和一个目标字符串target,在字符串source找到包括所有目标字符串字母的子串。

您在真实的面试中是否遇到过这个题?  
Yes
样例

给出source = "ADOBECODEBANC"target = "ABC" 满足要求的解  "BANC"

注意

如果在source没有这样的子串,返回"",如果有多个这样的子串,返回起始位置最小的子串。

挑战

要求时间复杂度为O(n)

说明

在答案的子串中的字母在目标字符串中是否需要具有相同的顺序?

——不需要。

标签   Expand  

解题思路:
用sourcehash[ ]和targethash[ ]来保存字符串的每个字符的保存个数。
再加上利用双指针
public class Solution {
    /**
     * @param source: A string
     * @param target: A string
     * @return: A string denote the minimum window
     *          Return "" if there is no such a string
     */
    public String minWindow(String source, String target) {
        // write your code
    	if(source==null||source.length()==0) return "";
    	int targetHash[] = new int[256];
    	int sourceHash[]  = new int[256];
    	/**初始化targetHash[]**/
    	for(int i=0;isourceHash[i]){
    			return true;
    		}
    	}
    	return false;
    }
}



你可能感兴趣的:(LintCode:最小子串覆盖)