自顶向下编程范式
关键是要先解决最上层的主干逻辑
1.首先思考主干逻辑,不要纠结于具体细节
2.主干逻辑编写好后再一步一步实现主干逻辑的子函数
实例操作
验证回文串
给定一个字符串,验证它是否是回文串,只考虑字母和数字字符,可以忽略字母的大小写
设计步骤
1.先想好整个入口函数的整体逻辑
1.先过滤掉字符串中所有非字母和数字 设计函数filterNonNumberAndChar(s)
2.把过滤后的字符串进行反转 reverseString(filterds)
3.比较反转前和反转后的两个字符串是否相等 reverseds.upper() == filterds.upper()
主函数实现完成后相当于整个程序的骨架基本搭建完成,接下来实现主函数里被调用的子函数即可
2.实现子函数filterNonNumberAndChar(s)
3.实现子函数reverseString(filterds)
4.调试程序
#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提交测试
leetcode的调用入口是Solution自定义类下的isPalindrome函数,这和本地的开发调试入口有区别