当前位置:网站首页>自顶向下的变成方法
自顶向下的变成方法
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]","");
}
}
边栏推荐
- Connexion et déconnexion TCP, détails du diagramme de migration de l'état
- Application of cow read / write replication mechanism in Linux, redis and file systems
- 100 cases of go language
- MVC source code sharing
- How to design a good technical scheme
- Selective search for object recognition paper notes [image object segmentation]
- University Information Management System
- Vs2022 offline installation package download and activation
- Typora activation method
- Data visualization practice: Data Visualization
猜你喜欢
卷妹带你学jdbc---2天冲刺Day2
MVC source code sharing
Class and object learning
Younger sister Juan takes you to learn JDBC -- two days' Sprint Day2
[intra group questions semester summary] some reference questions for beginners
canal部署、原理和使用介绍
Transaction and message semantics
DPDK——TCP/UDP协议栈服务端实现(二)
Five solutions across domains
Design and practice of low code real-time data warehouse construction system
随机推荐
Upgrading technology to art
实时数仓方案如何选型和构建
Import export simple
[spark] how to implement spark SQL field blood relationship
Spark source code analysis (I): RDD collection data - partition data allocation
Explore small program audio and video calls and interactive live broadcast from New Oriental live broadcast
Transaction and message semantics
numpy. tile()
numpy. exp()
卷妹带你学jdbc---2天冲刺Day2
Record how to modify the control across threads
EFK昇級到ClickHouse的日志存儲實戰
Thread status and stop
A tragedy triggered by "yyyy MM DD" and vigilance before New Year's Day~
Redis底层数据结构
Given two corresponding point sets AB, how to estimate the parameters of the specified transformation matrix R?
Cython入门
Architecture design method
Logstash - logstash pushes data to redis
Test depends on abstraction and does not depend on concrete