分享

Python算法.1

 云深无际 2021-11-03

我又来了!!!,这个算法的更新力度会保持到一天至少一更,如果当日未更会第二天补更,算法来源于需求,OJ,Github等。

实现一个算法:识别一个字符串中,是否包含唯一的字符。

class UniqueChars(object): # 定义一个类 def has_unique_chars(self, string): # 我们就认为就参数就一个串 if string is None: return False return len(set(string)) == len(string) # 精华的部分,使用了集合的特性

a = UniqueChars()a.has_unique_chars("12223")

结果


  1. 在实现算法的时候,如果一次可以完美的写出来,可以不用类的思想

  2. 如果不完美,或者是要几个函数才能完成任务,就写成类

  3. 以后出现的self参数,我不会计数,我会将默认函数-1

len(set(string)) == len(string)

核心的代码就是这样,将串转为set,接着与原本的长度来比较,结束运行。

Fizz Buzz 经典问题

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

  • 如果这个数被 3 整除,返回 'Fizz'。

  • 如果这个数被 5 整除,返回 'Buzz'。

  • 如果这个数能同时被 3 和 5 整除,返回 '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
Solu = Solution()Solu.fizz_buzz(89)

直接看代码,很是简单

先对传入参数进行判断


要建立一个存放结果的列表,接着直接上循环来进行遍历,注意基础的and使用,里面用str[i]来进行了数字得输出。

输出得结果


反转一个串得所有字符:

class ReverseString(object): def reverse(self, chars): if chars: size = len(chars) for i in range(size // 2): chars[i], chars[size - 1 - i] = \ chars[size - 1 - i], chars[i] return chars

str = ReverseString()str.reverse(['a', 'b', 'c'])


先看结果

if chars: size = len(chars) for i in range(size // 2): chars[i], chars[size - 1 - i] = chars[size - 1 - i], chars[i] return chars

核心代码在这里

因为Py交换变量不用中间变量,这里直接交换了

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多