编程算法基础-一刀切法
1.5一刀切法
编程和编筐一样,处理边缘问题相同重要。
程序逻辑
開始
中间
结束
一刀切法上式
用空格或逗号分隔的串,提取为各个部分
abc ttt,kmd,uuu xyz
切分成每一部分。
/** "abc ttt,kmd,uuu xyz"
用逗号或者空格隔开字符串
分解为各个部分
*/
package OneCut;public class SplitString {public static void main(String[] args) {// 一刀切(上式:事先补齐法)String s = "abc ttt,kmd,uuu xyz";String s2 = "";s+=',';//一刀切,补齐for(int i=0;i<s.length();i++){char c = s.charAt(i);if(c==' '||c==','){System.out.println(s2);s2="";}else{s2+=c;}}}
}
abc
ttt
kmd
uuu
xyz
一刀切法上式:事先补齐
设法先修补一下,让边沿和中间的部分处理没有差别
一刀切法下式
事后修正
先作出统一的结果,再对结果进行修补
将一个串拆成字母,而且字母间用逗号切割
"abcd"à "a,b,c,d"
public class StringToLetter {/*** 将一个串拆成字母* 而且字母间用逗号切割* "abcd" "a,b,c,d"*/public static void main(String[] args) {// 一刀切(下式:事后修正法)String s = "abcdefg";String s2 = "";for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);// 取出每个字符赋值给cs2 += "," + c;// 将s2中增加逗号和c}s2 = s2.substring(1);// 取s2的字串,就能够避免开头是逗号的问题System.out.println(s2);}
}
//当s为空时会报错
a,b,c,d,e,f,g
通话时间编程
如果手机通话时间不会大于24小时。
某个用户的開始通话时间为: 12:38:15
结束通话时间为: 12:39:16
则该用户通话时长为:62秒
对于一般的情况,可能须要考虑:跨分钟,跨小时,跨零点的问题。
假设已知了開始和结束时间,试编程求通话时长。
时间格式为:hh:mm:ss
小时採用24小时制
提示:关键在于怎样处理,能把貌似不同的特殊情况转化为一致的一般情况。
/*
如果手机通话时间不会大于24小时。
某个用户的開始通话时间为: 12:38:15
结束通话时间为: 12:39:16
则该用户通话时长为:62秒
对于一般的情况,可能须要考虑:跨分钟,跨小时,跨零点的问题。
如果已知了開始和结束时间,试编程求通话时长。
时间格式为:hh:mm:ss
小时採用24小时制
提示:关键在于怎样处理,能把貌似不同的特殊情况转化为一致的一般情况。*/package OneCut;import java.util.ArrayList;
import java.util.List;public class PhoneTime {public static void main(String[] args) {String s1 = "23:38:16";String s2 = "0:28:16";int hour;if (Integer.valueOf(mySplit(s2).get(0)) < Integer.valueOf(mySplit(s1).get(0))) {hour = 24 + Integer.valueOf(mySplit(s2).get(0))- Integer.valueOf(mySplit(s1).get(0));// 跨零点时+24} else {hour = Integer.valueOf(mySplit(s2).get(0))- Integer.valueOf(mySplit(s1).get(0));}int min = Integer.valueOf(mySplit(s2).get(1))- Integer.valueOf(mySplit(s1).get(1));int sec = Integer.valueOf(mySplit(s2).get(2))- Integer.valueOf(mySplit(s1).get(2)) + 1;int time = hour * 60 * 60 + min * 60 + sec;System.out.println("通话时间长度为:"+time+"s");}public static List<String> mySplit(String s) {List<String> list = new ArrayList<String>();//建立List存放时间String t = "";//暂时字符串s += ":";//一刀切上式for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c == ':') {list.add(t);//增加到listt = "";} else {t += c;}}return list;}
}
通话时间长度为:3001s
改动一下时间格式
/*
如果手机通话时间不会大于24小时。
某个用户的開始通话时间为: 12:38:15
结束通话时间为: 12:39:16
则该用户通话时长为:62秒
对于一般的情况,可能须要考虑:跨分钟,跨小时,跨零点的问题。
如果已知了開始和结束时间,试编程求通话时长。
时间格式为:hh:mm:ss
小时採用24小时制
提示:关键在于怎样处理,能把貌似不同的特殊情况转化为一致的一般情况。*/package OneCut;import java.util.ArrayList;
import java.util.List;public class PhoneTime {public static void main(String[] args) {String s1 = "23:38:16";String s2 = "23:39:6";int hour;if (Integer.valueOf(mySplit(s2).get(0)) < Integer.valueOf(mySplit(s1).get(0))) {hour = 24 + Integer.valueOf(mySplit(s2).get(0))- Integer.valueOf(mySplit(s1).get(0));// 跨零点时+24} else {hour = Integer.valueOf(mySplit(s2).get(0))- Integer.valueOf(mySplit(s1).get(0));}int min = Integer.valueOf(mySplit(s2).get(1))- Integer.valueOf(mySplit(s1).get(1));int sec = Integer.valueOf(mySplit(s2).get(2))- Integer.valueOf(mySplit(s1).get(2)) + 1;int time = hour * 60 * 60 + min * 60 + sec;System.out.println("通话时间长度为:"+time+"s");//为了显示的更好看,做例如以下改动。String ans = null;if(sec>0){ans = sec+"秒";}if(min>0){if(sec<0){int min2=min-1;//这里min为负值int sec2 = 1*60+sec;ans = min2+"分"+sec2+"秒";}else{ans=min+"分"+sec+"秒";}}if(hour>0){if(min<0){if(sec<0){int hour2=hour-1;int min2=1*60+min-1;//这里min为负值int sec2 = 1*60+sec;ans = hour2+"小时"+min2+"分"+sec2+"秒";}else{int hour2=hour-1;int min2=1*60+min;//这里min为负值ans = hour2+"小时"+min2+"分"+sec+"秒";}}else{ans=hour+"小时"+min+"分"+sec+"秒";}}System.out.println(ans);}public static List<String> mySplit(String s) {List<String> list = new ArrayList<String>();//建立List存放时间String t = "";//暂时字符串s += ":";//一刀切上式for (int i = 0; i < s.length(); i++) {char c = s.charAt(i);if (c == ':') {list.add(t);//增加到listt = "";} else {t += c;}}return list;}
}
通话时间长度为:51s
0分51秒
编程算法基础-一刀切法相关推荐
- 编程算法基础-常数变易法
1.4常数变易法 常数变异的思考方法 当程序中有许多因素都在变动的时候,我们可以假设其中的某些变数为常数,把他们写成固定的死值. 将来再用变量替换. 星号金字塔 常数变异典型应用 打印这个金字塔: * ...
- Python3算法基础练习:编程100例( 21~ 25)
往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) Python3算法基础练习:编程100例(11 ~ 15) Python3算法 ...
- Python3算法基础练习:编程100例(11 ~ 15)
往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) Python3算法基础练习:编程100例(11 ~ 15) 11.兔子问题 1 ...
- Python3算法基础练习:编程100例( 31 ~ 35 )
上期文章: Python3算法基础练习:编程100例( 26 ~ 30) 目录 31 判断星期几 32 反序输出列表 33 分隔列表 34 函数调用 35 文本加颜色 31 判断星期几 题目:请输入星 ...
- Python3算法基础练习:编程100例( 26 ~ 30)
上期文章: Python3算法基础练习:编程100例( 21~ 25) 目录 26 递归求 20! 的阶乘 27 字符串反转 28 猜岁数 29 整数打印每一位数字 30 回文数 26 递归求 20! ...
- Python3算法基础练习:编程100例(6 ~ 10)
往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) 6.斐波那契数列 7.列表复制 8.乘法口诀表 9.暂停输出 10.格式化时间 ...
- Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程
Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...
- Girls In AI:面向编程零基础女孩子的AI算法工程师养成计划
Github:YZHANG1270/Girls-In-AI Coding is the new sexy. GirlsInAI(GIA) 是一个面向编程 零基础 的AI算法工程师养成计划.鼓励更多的女 ...
- 送书 | 你一定能看懂的算法基础书(代码示例基于Python)
本文引自图灵教育<算法图解> 你一定能看懂的算法基础书:代码示例基于Python:400多个示意图,生动介绍算法执行过程:展示不同算法在性能方面的优缺点:教会你用常见算法解决每天面临的实际 ...
- python编程零基础-编程零基础应当如何开始学习 Python?
看到问题关于<编程零基础应当如何开始学习 Python?>,其实是在Python未来会很火的一个基础条件下,但是我觉得光光说学习Pyhon这件事,你首先得明白三件事: --如何判断你学习编 ...
最新文章
- bug诞生记——隐蔽的指针偏移计算导致的数据错乱
- 免费直播:1小时带你体验Python车牌识别实战
- elasticsearch扩展ik分词器词库
- 信息系统项目管理师-组织级项目管理与大型项目管理知识点
- 索非亚机器人的采访_还记得曾经扬言要“毁灭人类”的机器人索菲亚吗?如今过成这样...
- GridView 批量删除,自定义分页,定位页码
- 支付业务与技术架构学习总结(4)——对账相关业务知识及对账系统总结
- linux 命令 单词,linux常用命令的英文单词缩写
- java graphics dispose_Graphics.Dispose 方法 (System.Drawing) | Microsoft Docs
- 苹果电脑如何正确断网?macOS操作系统断网方法
- CFS完全公平调度类
- 如何做好离职交接工作?
- 侠客风云传服务器维护,侠客风云传服务器地址
- selenium+phantomjs截长图踩坑
- java js页面提示报警声音
- 固态硬盘在IDE、AHCI模式下的速度对比
- Java传输文件使用Base64优化传输速率。
- YUV编码为HEVC(H.265)
- WebStorm开发应用——前端页面
- C++程序运算时间计算