当前位置:网站首页>自顶向下的变成方法
自顶向下的变成方法
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]","");
}
}
边栏推荐
- Vs2022 offline installation package download and activation
- Transformer中的Self-Attention以及Multi-Head Self-Attention(MSA)
- Household accounting procedures (the second edition includes a cycle)
- DPDK——TCP/UDP协议栈服务端实现(一)
- Playing RTSP streaming video on Web pages (webrtc)
- Connexion et déconnexion TCP, détails du diagramme de migration de l'état
- Several promotion routines of data governance
- Getting started with Python
- PyTorch混合精度原理及如何开启该方法
- 302. 包含全部黑色像素的最小矩形 BFS
猜你喜欢

Several promotion routines of data governance

Understanding of nil in go language

Pychart cannot run designer Exe (this application failed to start because no Qt platform plugin could be I appears)

GoF23—建造者模式
![[spark] how to implement spark SQL field blood relationship](/img/8e/96f83844b480916b2662b0cf1fdf65.jpg)
[spark] how to implement spark SQL field blood relationship

canal部署、原理和使用介绍

实时数仓方案如何选型和构建

Underlying principle of MySQL index

Deeply uncover Ali (ant financial) technical interview process with preliminary preparation and learning direction

Keepalived to achieve high service availability
随机推荐
DPDK——TCP/UDP协议栈服务端实现(二)
温度报警器
C generic speed
A tragedy triggered by "yyyy MM DD" and vigilance before New Year's Day~
消息队列-功能、性能、运维对比
Redis multithreading and ACL
Install pyinstaller
Class and object learning
Getting started with Python
SSH keygen specifies the path
numpy. tile()
数据治理工作的几种推进套路
String class learning
Logstash - logstash pushes data to redis
Use the fast proxy to build your own proxy pool (mom doesn't have to worry about IP being blocked anymore)
Library management system
On site commissioning - final method of kb4474419 for win7 x64 installation and vs2017 flash back
Prometheus和Zabbix的对比
Tencent's 2022 school recruitment of large factories started with salary, and the general contracting of cabbage is close to 40W!
MySQL 索引底层原理