Pyhton程序设计:lintcode 乱序字符串 python
小职 2017-10-12 来源 :网络 阅读 1219 评论 0

摘要:本篇Pyhton程序设计教程将为大家讲解Pyhton编程的知识点,看完这篇文章会让你对Python编程的知识点有更加清晰的理解和运用。

本篇Pyhton程序设计教程将为大家讲解Pyhton编程的知识点,看完这篇文章会让你对Python编程的知识点有更加清晰的理解和运用。

 

题是这样的:

给出一个字符串数组S,找到其中所有的乱序字符串(Anagram)。如果一个字符串是乱序字符串,那么他存在一个字母集合相同,但顺序不同的字符串也在S中。

样例

对于字符串数组 ["lint","intl","inlt","code"]

返回 ["lint","inlt","intl"]

刚开始的想法是,使用dict字典才记录,字母,可是这样会需要很多的字典,并且处理起来不方便。后来就想到了给字符排序

原理很简单,给上面的字符排序,就像西面的这个过程

1 s = "adceb"2 l = list(s)3 l.sort()4 s1 = "".join(l)

通过这一步的处理之后,可以看到s1为 "abcde"

那么我们对传进来的数组中的所有元素,进行这个排序。因为我们按照特定的排序方式进行排序,必然会导致一样的排序结果。那么只要排序后的字符串是一致的,那么我们就可以肯定这几个字符串是相同的字符串

那么,下面直接上代码

class Solution:

    """

    @param: strs: A list of strings

    @return: A list of strings

    """

    def anagrams(self, strs):

        # write your code here

        if strs == None and strs == []:

            return strs

        if len(strs) == 1:

            return strs

            

        returnlist = []

        templist = {}

        for i in range(len(strs)):

            if strs[i] == None and strs[i] == "":

                continue

            s = strs[i]

            s1="".join((lambda x:(x.sort(),x)[1])(list(s))) #这一句是百度出来的,但是也不难理解,将s的list传入,排序后,返回x

            if s1 in templist:

                templist[s1].append(i)

            if s1 not in templist:

                templist[s1] = [i]

                

        for k in templist.keys():

            if len(templist.get(k)) > 1:

                for i in templist.get(k):

                    returnlist.append(strs[i])

        return returnlist

 

ok done,如果有更好的算法,也请分享给我。谢谢!

希望这篇Python文章可以帮助到你。总之,同学们,你想要的职坐标Python频道都能找到!

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved