+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-07(2)

2019-08(89)

2019-09(94)

2019-10(15)

2019-11(5)

python实现判断两个字符串是否为换位字符串

发布于2020-07-31 21:52     阅读(412)     评论(0)     点赞(9)     收藏(4)


0

1

2

3

4

5

6

7

8

9

python实现判断两个字符串是否为换位字符串

腾讯笔试题
题目描述:
换位字符串是指组成字符串的字符相同,但位置不同。例如:由于字符串“ aaaabbc”与字符串“abcbaaa” 就是由相同的字符所组成的,因此它们是换位字符。
分析与解答:
在算法设 计中, 经常会采用空 间换时间的方法以降低时间 复杂度, 即通过增加额外的存 储空间来达到优化算法性能的目的。就本题而言,假设字符串中只使用 ASCII字符,由于 ASCII 字符共有 256 个 (对应的编码为 0~255), 在实现的时候可 以通过申请大小为 256 的数组来记 录各个字符 出现的个数,并将其初始化为 0,然后遍历第一个字符串 ,将字符对应 的 ASCII 码值作为数组下标,把对应数组的元素加 1,然后遍历第二个字符串,把数组中对应的元素值 减 1。如果最后数组中各个元素的值都为 0, 那么说明这两个字符串是由相同的字符所组成的 ; 否则,这两个字符串是由不同的字符所组成的。实现代码如下 :

def compare(s1,s2):
    result=True
    bcount=[None]*256
    i=0
    while i<256:
        bcount[i]=0
        i+=1
    i=0
    while i<len(s1):
        bcount[ord(list(s1)[i])-ord('0')]+=1
        i+=1
    i=0
    while i<len(s2):
        bcount[ord(list(s2)[i])-ord('0')]-=1
        i+=1
    i=0
    while i<256:
        if bcount[i]!=0:
            result=False
            break
        i+=1
    return result
if __name__=='__main__':
    str1='aaaabbc'
    str2='abcbaaa'
    print(str1+'和'+str2)
    if compare(str1,str2):
        print('是换位符')
    else:
        print('不是换位符')
输出:
aaaabbc和abcbaaa
是换位符

原文链接:https://blog.csdn.net/weixin_42813521/article/details/107664231

0

1

2

3

4

5

6

7

8



所属网站分类: 技术文章 > 博客

作者:天青色等烟雨

链接: https://www.pythonheidong.com/blog/article/467142/09af85a130e7c3756348/

来源: python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

9 0
收藏该文
已收藏

评论内容:(最多支持255个字符)