当前位置:网站首页>自顶向下的变成方法
自顶向下的变成方法
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]","");
}
}
边栏推荐
- Logstash - logstash pushes data to redis
- 06. talk about the difference and coding between -is and = = again
- numpy. log
- University Information Management System
- Logstash——使用throttle过滤器向钉钉发送预警消息
- SQL server functions
- The difference between abstract and interface interface
- Level signal and differential signal
- Handwritten background management framework template (I)
- Day4 branch and loop
猜你喜欢

消息队列-功能、性能、运维对比
![Selective search for object recognition paper notes [image object segmentation]](/img/cf/d3b08d41083f37c164b26a96b989c9.png)
Selective search for object recognition paper notes [image object segmentation]

去哪儿网BI平台建设演进史

Spark source code analysis (I): RDD collection data - partition data allocation

在web页面播放rtsp流视频(webrtc)

Efk upgrade to Clickhouse log storage practice

MySQL 索引底层原理

Typora activation method

TCP连接与断开,状态迁移图详解

Transformer中的Self-Attention以及Multi-Head Self-Attention(MSA)
随机推荐
MVC source code sharing
Matching environment of ES6
数据可视化实战:实验报告
SQL server functions
EFK升级到ClickHouse的日志存储实战
Mysql-10 (key)
Tencent WXG internship experience (has offered), I hope it will help you!
302. 包含全部黑色像素的最小矩形 BFS
04. basic data type - list, tuple
numpy.tile()
Thinking and summary of technical ability
Logstash - logstash sends an alarm email to email
Data visualization practice: Experimental Report
Selective Search for Object Recognition 论文笔记【图片目标分割】
numpy.exp()
Vs2022 offline installation package download and activation
Logstash -- send an alert message to the nail using the throttle filter
Logstash - logstash pushes data to redis
MySQL-07
NPM private server problem of peanut shell intranet penetration mapping