《Craking the Coding interview》python实现---01

###题目:给定一个字符串,判断其中是否有重复字母
###思路:将重复的字符放入到list中,并进行计数统计
###实现:伪代码、函数、类实现

###伪代码:
string=s #给定的字符串
list=[] #放入重复的字符
dict={} #重复的字符进行统计

#判断字符串是否为空,逻辑实现
if str !=None:
for i in s:
if list !=None:
if i in list:
if i in dict.keys():
dict[i]+=1
else:
dict[i]=1
else:
list.append(i)
else:
list.append(i)
else:
print('输入的字符串为空!')

###python函数实现:

def judge_str(str):
         str_list=[]
         str_repet={}
         if str !=None:
                  for i in str:
                           if not list is None:
                                    if i in str_list:
                                             if i  in str_repet.keys():
                                                      str_repet[i]+=1
                                             else:
                                                      str_repet[i]=1
                                    else:
                                             str_list.append(i)
                           else:
                                    str_list.append(i)
                  print('该字符串中有%s个字符有重复'%len(str_repet.keys()))
                  for  key,value in str_repet.items():
                           print('重复的字符为【%s】,共重复了%s次'%(key,value))
         else:
                  print('输入的字符串是空!')

###python类的实现:

from  functools import wraps
import time
def decorator(func):
         @wraps(func)
         def wrappres(*args,**kwargs):
                  start=time.time()
                  func(*args,**kwargs)
                  end=time.time()
                  usetime=end-start
                  print('查找共花费{:.2f}秒'.format(usetime))
         return wrappres
class JudgeStr:
         def __init__(self,string):
                  self.str_tuple=()
                  self.str_repet={}
                  self.string=string
                  self.str=self._filter_handler()
                  
         def  _judge_handler(self):
                  for i in self.str:
                           if self.str_list !=None:
                                    if i in self.str_list:
                                             if i  in self.str_repet.keys():
                                                      self.str_repet[i]+=1
                                             else:
                                                      self.str_repet[i]=1
                                    else:
                                             self.str_list.append(i)
                           else:
                                    self.str_list.append(i)

         def  _filter_handler(self):
                  if  self.string !=None:
                           if type(self.string) ==str:      
                                    return self.string
                           else:
                                    raise ValueError('请传入字符串参数')
                  else:
                           raise TypeError('参数为空')
         @decorator
         def result_handler(self):
                  self._judge_handler()
                  print('该字符串中有%s个字符有重复'%len(self.str_repet.keys()))
                  for  key,value in self.str_repet.items():
                           print('重复的字符为【%s】,共重复了%s次'%(key,value))



原文地址:https://www.cnblogs.com/jack-z/p/10446562.html