题解 | #牛牛的串联子串游戏#
牛牛的串联子串游戏
https://www.nowcoder.com/practice/c1984371372b43f3b10bf6d0231520bb
#思路很简单,第一步:将s切成words格式的单词用1【】装起来,第二部:然后根据words里面的个数将1【】拆成words样式的2【】,这里用map来记录开始位置和拆好的2【】,第三步:通过排序好的words与2【】中的值对比,记录相同的键就是需要的答案。一边想一边写就可以解决问题 #coding:utf-8 # # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param s string字符串 # @param words string字符串一维数组 # @return int整型一维数组 # class Solution: def findSubstring(self , s , words ): res=[] num=len(words) n=len(words[0]) l=len(s) k=l/n i=0 while i<l-1: res.append(s[i:i+n]) i=i+n #将s用[]装起来,按照每一个单词的长度拆开 map={} j=0 while j<=k-num: st=[] for m in range(num): st.append(res[j+m]) if j*n not in map: map.setdefault(j*n,sorted(st)) else: map.setdefault(j*n,st) j+=1 print(map) # 用map记录每一个词语的开始位置key,还有后面words长度的[],记住sorted,后面还要对比 ress=[] for i in map.items(): if i[1]==sorted(words): ress.append(i[0]) print(ress) return(sorted(ress)) # write code here