自顶向下编程范式

      关键是要先解决最上层的主干逻辑

     1.首先思考主干逻辑,不要纠结于具体细节
     2.主干逻辑编写好后再一步一步实现主干逻辑的子函数

实例操作

     验证回文串

     给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写

 设计步骤

    1.先想好整个入口函数的整体逻辑

      1.先过滤掉字符串中所有非字母和数字 设计函数filterNonNumberAndChar(s)

      2.把过滤后的字符串进行反转 reverseString(filterds)

      3.比较反转前和反转后的两个字符串是否相等 reverseds.upper() == filterds.upper()

    

算法代码编程范式_字符串

    主函数实现完成后相当于整个程序的骨架基本搭建完成,接下来实现主函数里被调用的子函数即可  

  2.实现子函数filterNonNumberAndChar(s)

       

算法代码编程范式_主函数_02

  3.实现子函数reverseString(filterds)

       

算法代码编程范式_主函数_03

  4.调试程序

   

算法代码编程范式_字符串_04

算法代码编程范式_主函数_05

算法代码编程范式_主函数_06

#1.先想好整个入口函数的整体逻辑
#这个是主函数的逻辑
#主函数里面调用的子函数可以先不实现,规定好子函数的参数和返回值即可
def  isPalindrome(s):
    #1.先过滤掉字符串中所有非字母和数字
    filterds = filterNonNumberAndChar(s)
    #2.把过滤后的字符串进行反转
    reverseds = reverseString(filterds)
    #3.比较反转前和反转后的两个字符串是否相等
    return reverseds.upper() == filterds.upper()


#把主函数里面的逻辑写好之后 再来实现其调用的子函数
#2.实现主函数中调用的子函数filterNonNumberAndChar
def filterNonNumberAndChar(s):
    newStr=''.join(list(filter(str.isalnum,s)))
    return newStr


#3.实现主函数中调用的子函数reverseString 对字符串进行反转
def reverseString(filterds):
    return filterds[::-1]



if __name__ == "__main__":
    re=isPalindrome("race a car")
    print(re)

View Code

 

leetcode提交测试

   

算法代码编程范式_字符串_07

   leetcode的调用入口是Solution自定义类下的isPalindrome函数,这和本地的开发调试入口有区别