当前位置:网站首页>自顶向下的变成方法
自顶向下的变成方法
2022-06-26 06:12:00 【Oh No 发量又少了】
1.什么是自顶向下的变成方法
说白了就是先总体后局部的编写方法,就是编写程序的视角从整体的宏观性逐层进入具体的微惯性的一种编程思想。我们在刚开始的时候不需要将所有的业务考虑的那么详细,我们需要将我们所处理的业务分为几大模块,按几大步走,然后再对每一个模块进行逐级的细分。这样使得我们编程中的思路更清晰,代码阅读更加容易,方便后期维护,因为代码的编写过程是自顶向下逐层细化的,我们在可以在编码的早期就形成了一个可以被单元测试的函数。这很符合测试框架的流程——测试框架不关心程序内部是如何实现的,只要能够根据传入的参数返回正确的结果即可。同理,我们早期在尚未真正实现底层函数时,可以通过mock或硬编码的形式,让单元测试得以通过,更早的将主方法或类放到单元测试的保护之下,再真正实现过程中,就可以更加游刃有余。
2.实例分析
力扣算法题:
给定一个字符串,验证它是否是回文串,只考虑字母和数字,可以忽略字母的大小写。
说明:本题中,我们将空字符串定义为有效的回文串。
实例1:
输入:“A man, a plan, a canal : Panama”
输出:true
实例2:
输出:“race a car”
输出:false
这道题的解题思路我觉得可以分为两大步走:1.提出字符串中的字母和数字;2.将字符串进行左右对调
public class Solution {
public boolean isPalindrome (String s) {
//高层次(主干)逻辑
//1.filter out number & char; 2. reverse and compare
String filteredS = _filterOnlyHaveNumberAndChar(s);
String reversedS = _reverseString(filteredS);
return reversedS.equalsIgnoreCase(filteredS);
}
private String _reverseString(String filteredS) {
return null;
}
private String _filterOnlyHaveNumberAndChar(String s) {
return null;
}
}
上面已经将主干逻辑捋顺了,下面是对两步进行具体的代码实现
- 提出字符串中的字母和数字
private String _filterOnlyHaveNumberAndChar(String s) {
return s.replaceAll("[^A-Za-z0-9]","");
}
- 将字符串进行左右对调
private String _reverseString(String s) {
return new StringBuilder(s).reverse().toString();
}
最后再将代码进行整理
public class Solution {
public boolean isPalindrome (String s) {
//高层次(主干)逻辑
//1.filter out number & char; 2. reverse and compare
String filteredS = _filterOnlyHaveNumberAndChar(s);
return _reverseString(filteredS).equalsIgnoreCase(filteredS);
}
private String _reverseString(String s) {
return new StringBuilder(s).reverse().toString();
}
private String _filterOnlyHaveNumberAndChar(String s) {
return s.replaceAll("[^A-Za-z0-9]","");
}
}
边栏推荐
猜你喜欢

Design and practice of low code real-time data warehouse construction system

Prometheus和Zabbix的对比

事务与消息语义

How to select and build a real-time data warehouse scheme

Redis多线程与ACL

100 cases of go language

Efk upgrade to Clickhouse log storage practice

How to associate wechat applet QR code to realize two code aggregation

Record how to modify the control across threads

EFK昇級到ClickHouse的日志存儲實戰
随机推荐
Household accounting procedures (the second edition includes a cycle)
Logstash -- send an alert message to the nail using the throttle filter
Implement the runnable interface
Deeply uncover Ali (ant financial) technical interview process with preliminary preparation and learning direction
04. basic data type - list, tuple
C generic speed
Yamaha robot splits visual strings
100 cases of go language
SQL Server视图
Younger sister Juan takes you to learn JDBC -- two days' Sprint Day2
06. talk about the difference and coding between -is and = = again
GoF23—抽象工厂模式
PyTorch使用多GPU并行训练及其原理和注意事项
NPM private server problem of peanut shell intranet penetration mapping
tf. nn. top_ k()
MySQL-06
Redis底层数据结构
05. basic data type - Dict
numpy. log
低代码实时数仓构建系统的设计与实践