赞
踩
【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript
【华为OD】2024年C、D卷真题集:最新的真题集题库 C/C++/Java/python/JavaScript-CSDN博客
JS、C、Java、python、C++代码实现:
【华为OD】D卷真题100分:关联子串 JavaScript代码实现[思路+代码]-CSDN博客
【华为OD】D卷真题100分:关联子串 C语言代码实现[思路+代码]-CSDN博客
【华为OD】D卷真题100分:关联子串 java代码实现[思路+代码]-CSDN博客
【华为OD】D卷真题100分:关联子串 python代码实现[思路+代码]-CSDN博客
【华为OD】D卷真题100分:关联子串 C++代码实现[思路+代码]-CSDN博客
给定两个字符串str1和str2,如果字符串str1中的字符,经过排列组合后的字符串中,只要有一个字符串是str2的子串,则认为str1是str2的关联子串。
若str1是str2的关联子串,请返回子串在str2的起始位置;
若不是关联子串,则返回-1。
示例1:
输入:str1="abc",str2="efghicabiii"
输出:5
解释:str2包含str1的一种排列组合("cab"),此组合在str2的字符串起始位置为5(从0开始计数)
示例2:str1="abc",str2="efghicaibii"
输出:-1。
预制条件:
输入描述
输入两个字符串,分别为题目中描述的str1、str2。
输出描述
如果str1是str2的关联子串,则返回子串在str2中的起始位置。
如果str1不是str2的关联子串,则返回-1。
若str2中有多个str1的组合子串,请返回最小的起始位置。
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
abc efghicabiii
输出
5
说明
str2包含str1的一种排列组合("cab"),此组合在str2的字符串起始位置为5(从0开始计数)
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
abc efghicaibii
输出
-1
说明
“abc”字符串中三个字母的各种组合(abc、acb、bac、bca、cab、cba),str2中均不包含,因此返回-1
备注
输入的字符串只包含小写字母;
两个字符串的长度范围[1, 100,000]之间
34334
+---+
3 | | ++ + +---|
| | | 3 + 6 + | + | +
| + | | + + + | + | +
| + | +---+ + + +++++ + + + | +
| + | + | + +----+ | | + + + | +
| + 3 | + | + + + 2 | | 2 + + + | +
| + | + | + + + | | + + + | +
| +---+ + | | | + ----+ | +---+ | | + | +
| | + | | | + | | | | | | + | +
| 1 | + | 8 | | + 1 | | | 1 | | 1 | | + | +
| | + | | | + | | | | | | | + | +
| +---+ + +---+ | ++---+ ++ +---+ +---+ | + | +
| | + | | | ++ | | |+ | +
|0 | + | 0 | 0 | ++ | 0 | |+ | +
| | + | | | ++ | | |+ | +
+---+ + +-------+ +---+| +|+ | +
+ + | +
0 1 2 3 4 5 6 7 8 9 10 11 12 + v: w u m u 1 0 2 4
使用哈希表配合滑动窗口来实现即可
- import collections
-
-
- def find_ok_pos(pos, val):
- while pos + len(s1) <= len(s2):
- if collections.Counter(s2[pos:pos + len(s1)]) == val:
- return pos
- pos += 1
- return -1
-
-
- def calc_min_pos_result():
- pos = find_ok_pos(0, collections.Counter(s1))
-
- return pos
-
-
- if __name__ == '__main__':
- s1, s2 = input().split()
- ret = calc_min_pos_result()
- print(ret)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。