iTesting软件测试知识分享

有趣的字符串相关面试题

面试过程中, 算法几乎变成了一个逃不过去的坎儿, 而在算法的面试中, 关于字符串的问题很常见,也很基础,今天我们就来讲几个非常有代表意义的面试题。

1。 给定一个字符串,求字符串中连续相同的字符的个数, 例如给定字符串“abbcccdxt”,输出[‘a1’,’b2’,’c3’,’d1’,’x1’,’t1’]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def count_s(s):
if len(s)<=0 or not isinstance(s, str):
return
base = s[0]
result = []
count = 1
for i in s[1:]:
if i == base:
count +=1
else:
result.append(base+str(count))
count =1
base = i
result.append(base + str(count))
return result
print(count_s('abbcccdxt'))

2。 上题我们来变形下,我要求得出如下结果 [‘aa’, ‘bb’, ‘ccc’, ‘d’, ‘x’, ‘t’]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def count_s(s):
if len(s)<=0 or not isinstance(s, str):
return
base = s[0]
result = []
count = 1
for i in s[1:]:
if i == base:
count +=1
else:
result.append(base*count)
count =1
base = i
result.append(base *count)
return result
print(count_s('abbcccdxt'))

3。 我们再变下,求字符串中连续相同个数是3的字符,比如打印出‘ccc’,‘bb’由于字符数2个相同不打印出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
def count_s(s):
if len(s)<=0 or not isinstance(s, str):
return
base = s[0]
result = []
count = 1
for i in s[1:]:
if i == base:
count +=1
else:
if count ==3:
result.append(base*count)
count =1
base = i
if count == 3:
result.append(base * count)
return result
print(count_s('abbcccdxt'))

4。 最后,再来“作”一下,我现在不要求连续相同了,我要求得出字符串中所有3个字符的重复个数,比如字符串“abccbbcc”,我们会得到’abc’, ‘bcc’, ‘ccb’, ‘cbb’, ‘bbc’, ‘bcc’这些长度为3的字符,其中“bcc”出现2次,其它都出现一次。我们要实现它。

1
2
3
4
5
6
7
from collections import Counter
def count_s(s):
if len(s)<=0 or not isinstance(s, str):
return
return [s[number:number+3] for number in range(len(s)-2)]
print(Counter(count_s('abccbbcc')))
🐶 您的支持将鼓励我继续创作 🐶
-------------评论, 吐槽, 学习交流,请关注微信公众号 iTesting-------------
请关注微信公众号 iTesting wechat
扫码关注,跟作者互动