leetcode: Substring with Concatenation of All Words

来源:互联网 发布:保险柜哪个品牌 知乎 编辑:程序博客网 时间:2024/06/05 08:08

题目链接

这个题用java有点吃亏。同样的思路,c++可以过

import java.util.Collections;import java.util.HashMap;import java.util.LinkedList;import java.util.List;public class Solution {    public static void main(String args[])    {        Solution obj=new Solution();        List<Integer> res=obj.findSubstring("barfoothefoobarman", new String[]{"foo", "bar"});        for (Integer integer : res) {            System.out.println(integer);        }    }    public HashMap<String, Integer> map=new HashMap<String, Integer>();    public void initMap(String[] words)    {        map=new HashMap<String, Integer>();        for (String string : words) {            map.put(string, 0);        }    }    public List<Integer> findSubstring(String s, String[] words) {        List<Integer> result=new LinkedList<Integer>();        int wordLength=words[0].length();        int wordCount=words.length;        out: for(int i=0;i<s.length();i++)        {            initMap(words);            int k=0;            for(k=0;k<wordCount&&i+k*wordLength+wordLength<=s.length();k++)            {                String pice=s.substring(i+k*wordLength, i+k*wordLength+wordLength);                Integer count=map.get(pice);                if(count!=null&&count==0)                {                    map.put(pice, 1);                }                else                {                    continue out;                }            }            if(i+k*wordLength+wordLength<=s.length())            {                result.add(i);            }        }        return result;    }}
0 0
原创粉丝点击