京东的一道笔试题
输入样例:
字符串A: ababcb
字符串B: xyx
子字符串A的子字符串aba,bab,bcb与字符串B形状等价,我们是要求出A中有多少个子字符串与字符串B等价。
(显然,字符串A的长度大于等于字符串B的长度,等号的情况举例:字符串A:abcc,字符串B:xyaa)
提示中import re,那应该是可以用正则来实现?
京东的一道笔试题
输入样例:
字符串A: ababcb
字符串B: xyx
子字符串A的子字符串aba,bab,bcb与字符串B形状等价,我们是要求出A中有多少个子字符串与字符串B等价。
(显然,字符串A的长度大于等于字符串B的长度,等号的情况举例:字符串A:abcc,字符串B:xyaa)
提示中import re,那应该是可以用正则来实现?
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @File : 02.py
# @Author: huifer
# @Date : 2018/9/10
def indexOfEm(str_b):
# 获取索引对应字母
set_b = set(str_b)
en_numb = dict()
for i, e in enumerate(set_b):
en_numb[e] = i
return en_numb
def strToNumb(str_b):
# 把 xyx 更换成数字
en_numb = indexOfEm(str_b)
new_b = list(str_b)
new_str = [en_numb.get(i) for i in new_b]
return new_str
def splitJoinStr(str_a, str_b):
# 根据 文本b切割
str_a = list(str_a)
str_b = list(str_b)
split_len = len(str_b)
res = list()
for i in range(str_a.__len__()):
a = str_a[i:split_len + i]
if a.__len__() == split_len:
res.append(a)
return res
def xtoy(str_b):
# 交换位置
a = str_b.replace("x","z").replace("y","x").replace("z","y")
return a
if __name__ == '__main__':
str_a = "ababcb"
str_b = "xyx"
str_b_2 = xtoy(str_b)
# 标准
standard = strToNumb(str_b)
standard_2 = strToNumb(str_b_2)
print("标准为", standard)
print("标准为", standard_2)
# 切割后文本
split_str = splitJoinStr(str_a, str_b)
for i in split_str:
# 当前预估值
da = strToNumb(i)
# print(da)
if da == standard or da ==standard_2:
print("通过",i)
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
python3