Python算法.1
我又来了!!!,这个算法的更新力度会保持到一天至少一更,如果当日未更会第二天补更,算法来源于需求,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")

结果
在实现算法的时候,如果一次可以完美的写出来,可以不用类的思想
如果不完美,或者是要几个函数才能完成任务,就写成类
以后出现的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)
