进击吧!Pythonista(9/100)

简介: 进击吧!Pythonista(9/100)

找到给定字符串中的不同字符

在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下:

  • 当传入的字符串为 'aad''ad' 时,结果为 'a'
  • 当传入的字符串为 'aaabccdd''abdcacade' 时,结果为 'e'
class Solution(object):
    def find_diff(self, str1, str2):
        if str1 is None or str2 is None:
            raise TypeError('str1 or str2 cannot be None')
        result = 0
        for char in str1:
            result ^= ord(char)
        for char in str2:
            result ^= ord(char)
        return chr(result)

Fizz Buzz 经典问题

给定一个整数 num,从 1num 按照下面的规则返回每个数:

  • 如果这个数被 3 整除,返回 'Fizz'
  • 如果这个数被 5 整除,返回 'Buzz'
  • 如果这个数能同时被 35 整除,返回 'FizzBuzz'
  • 如果这个数既不能被 3 也不能被 5 整除,返回这个数字的字符串格式。
class Solution(object):
    def fizz_buzz(self, num):
        if num is None:
            raise TypeError('num cannot be None')
        if num < 1:
            raise ValueError('num cannot be less than one')
        results = []
        for i in range(1, num + 1):
            if i % 3 == 0 and i % 5 == 0:
                results.append('FizzBuzz')
            elif i % 3 == 0:
                results.append('Fizz')
            elif i % 5 == 0:
                results.append('Buzz')
            else:
                results.append(str(i))
        return results

实现链表类

实现链表的插入,增加,查找,删除,查看长度和打印的方法。链表的介绍如下:

  • 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。
  • 链表中每一个元素称为结点,链表由一系列结点组成,结点可以在运行时动态生成。
  • 链表的每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
class Node(object):
    def __init__(self, data, next=None):
        self.next = next
        self.data = data
    def __str__(self):
        return self.data
class LinkedList(object):
    def __init__(self, head=None):
        self.head = head
    def __len__(self):
        curr = self.head
        counter = 0
        while curr is not None:
            counter += 1
            curr = curr.next
        return counter
    def insert_to_front(self, data):
        if data is None:
            return None
        node = Node(data, self.head)
        self.head = node
        return node
    def append(self, data):
        if data is None:
            return None
        node = Node(data)
        if self.head is None:
            self.head = node
            return node
        curr_node = self.head
        while curr_node.next is not None:
            curr_node = curr_node.next
        curr_node.next = node
        return node
    def find(self, data):
        if data is None:
            return None
        curr_node = self.head
        while curr_node is not None:
            if curr_node.data == data:
                return curr_node
            curr_node = curr_node.next
        return None
    def delete(self, data):
        if data is None:
            return
        if self.head is None:
            return
        if self.head.data == data:
            self.head = self.head.next
            return
        prev_node = self.head
        curr_node = self.head.next
        while curr_node is not None:
            if curr_node.data == data:
                prev_node.next = curr_node.next
                return
            prev_node = curr_node
            curr_node = curr_node.next
    def print_list(self):
        curr_node = self.head
        while curr_node is not None:
            print(curr_node.data)
            curr_node = curr_node.next
    def get_all_data(self):
        data = []
        curr_node = self.head
        while curr_node is not None:
            data.append(curr_node.data)
            curr_node = curr_node.next
        return data

记得先自己做一遍再看答案哦~

Love&Share

[ 完 ]

相关文章
|
算法 Python
进击吧!Pythonista(3/100)
进击吧!Pythonista(3/100)
|
算法 vr&ar 索引
进击吧!Pythonista(6/100)
进击吧!Pythonista(6/100)
112 0
|
存储 弹性计算 运维
Serverless 奇点已来,下一个十年将驶向何方?
基于阿里云全面 Serverless 化的经历,阿里巴巴研究员、阿里云智能云原生应用平台总经理丁宇(叔同)阐述了企业应用架构的演进历程,以及 Serverless 兴起带来的行业变化。
125 0
Serverless 奇点已来,下一个十年将驶向何方?
|
架构师 Java 程序员
【毕业季|进击的技术er】作为一个职场人,我想对你们说
毕业季,是对青春的美好向往,经历了大学生涯之后,放下厚厚的书本,摒弃一道道繁杂的习题,在湛蓝的天空下、幽静的小树林里、迷人的海滩等山水美景间尽享自然的乐趣,是对大学生活最好的慰藉,也是对未来的职场生活最最大的尊重! 毕业了,离别宴,分手饭,兄弟情,姐妹情,爱情等各种感情开始接受考验了,对于风华正茂的青春,感情在这一时间是最好的黄金佳期,是对青春最好的告白!...
130 0
【毕业季|进击的技术er】作为一个职场人,我想对你们说
|
边缘计算 运维 Kubernetes
OpenYurt 邀你共赴 2022 EdgeX 中国挑战赛!
2022 年 8 月 3 日,由 LF Edge 主办的第三届 EdgeX 中国挑战赛正式开幕,阿里云作为本届大赛战略合作伙伴重磅亮相,希望通过其主导开源的云原生边缘计算智能平台 OpenYurt 与 EdgeX Foundry 的持续深入合作,共同为广大开发者构建一个物联网及边缘计算的学习和分享平台,以开源、共享的技术环境解决行业技术问题,促进云原生边缘计算、AIoT 等的应用落地及部署。
OpenYurt 邀你共赴 2022 EdgeX 中国挑战赛!
|
存储 弹性计算 运维
云上的潮玩社区,如何让年轻人念念不忘?
许多潮玩品牌正是看中千岛品牌资源整合的能力,首选在千岛微信小程序上进行新品首发、新品市场测试等业务。由于这些业务流量的激增,在业务架构上,如何有效应对突发流量、保障业务系统稳定性成了至关重要的问题。
1091 0
云上的潮玩社区,如何让年轻人念念不忘?
|
存储 缓存 前端开发
SegmentFault D-Day 南京站圆桌:技术与产品的结合
我们在今年的 SegmentFault D-Day 技术沙龙里加入了别具一格的「圆桌讨论」环节,圆桌偏重的是技术热点、成长历程以及创业路上的经验交流,和主体的严肃议题分享形成互补,就是为了做出更加 SegmentFault 式的沙龙体验,让技术与实际经验结合,让普通开发者与大牛更深入地交流。
194 0
SegmentFault D-Day 南京站圆桌:技术与产品的结合
|
机器学习/深度学习 存储 安全
聚焦区块链应用,SegmentFault 黑客马拉松引爆珠三角
聚焦区块链应用,SegmentFault 黑客马拉松引爆珠三角
332 0
聚焦区块链应用,SegmentFault 黑客马拉松引爆珠三角
|
前端开发 JavaScript 程序员
SegmentFault独家专访fengche.co:小而美的团队协作工具
fengche.co是一个刚刚好的中小团队协作工具。原名pragmatic.ly,2013年以来主攻国内市场,使用了更好记的新域。经过多次迭代的fengche.co,始终保持了简洁的风格。
423 0
SegmentFault独家专访fengche.co:小而美的团队协作工具
|
算法 搜索推荐 云计算
SegmentFault 成功入选微软创投加速器第四期,及背后的故事
接到微软创投加速器项目负责Vivian 最终决选的面试通过电话的时候,我那个时候正在从北京回杭州的高铁上面,我刚刚查了一下通话记录是在12月25日的下午4点钟左右 :) 那个时候刚刚结束了在北京两周的出差,每次去帝都出差都是工作狂模式,所以当时处于极度的疲惫状态,当时接到这个电话通知的时候还是小兴奋了一下,代表我们成功的从全国400多家企业的竞争中突破重围,成功入选微软创投云加速器的第四期了!
186 0
SegmentFault 成功入选微软创投加速器第四期,及背后的故事

热门文章

最新文章