今天刷题的时候,出现了一个问题。
今天刷的题是
这道题被leetcode定义为困难题,我第一眼想到的是先把L字符串数进行全排列,然后再用kmp字符串匹配算法对全排列后的字符串进行匹配,然后得出结果,然鹅细想发现,首先字符串的全排列算法一般用回溯法(然鹅回溯法并不是特别熟练),然后就是kmp算法了,这个算法有些难度,还是不太理解,所以最后还是放弃了,然后就想着看看别人写的算法能不能理解一下。
下面是别人给出的一个算法解,虽然这个算法可能并不是最优解,但是这个算法还是算比较容易理解吧,毕竟我能理解(我这个菜鸟都能理解相信大多数人还是可以理解的)。
public class Solution {
public List<Integer> findSubstring(String S, String[] L) {
List<Integer> ans = new ArrayList<Integer>();
if (S.length() < 1 || L.length < 1) return ans;
int len = L[0].length(); //题目说L中每个单词长度