前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有趣的字符串相关面试题

有趣的字符串相关面试题

作者头像
iTesting
发布2019-10-29 16:22:01
3140
发布2019-10-29 16:22:01
举报
文章被收录于专栏:iTesting

iTesting,爱测试,爱分享

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

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

代码语言:javascript
复制
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’]

代码语言:javascript
复制
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个相同不打印出

代码语言:javascript
复制
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次,其它都出现一次。我们要实现它。

代码语言:javascript
复制
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')))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 iTesting 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1。 给定一个字符串,求字符串中连续相同的字符的个数, 例如给定字符串“abbcccdxt”,输出[‘a1’,’b2’,’c3’,’d1’,’x1’,’t1’]
  • 2。 上题我们来变形下,我要求得出如下结果 [‘aa’, ‘bb’, ‘ccc’, ‘d’, ‘x’, ‘t’]
  • 3。 我们再变下,求字符串中连续相同个数是3的字符,比如打印出‘ccc’,‘bb’由于字符数2个相同不打印出
  • 4。 最后,再来“作”一下,我现在不要求连续相同了,我要求得出字符串中所有3个字符的重复个数,比如字符串“abccbbcc”,我们会得到’abc’, ‘bcc’, ‘ccb’, ‘cbb’, ‘bbc’, ‘bcc’这些长度为3的字符,其中“bcc”出现2次,其它都出现一次。我们要实现它。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档