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. 编程算法基础-常数变易法

    1.4常数变易法 常数变异的思考方法 当程序中有许多因素都在变动的时候,我们可以假设其中的某些变数为常数,把他们写成固定的死值. 将来再用变量替换. 星号金字塔 常数变异典型应用 打印这个金字塔: * ...

  2. Python3算法基础练习:编程100例( 21~ 25)

    往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) Python3算法基础练习:编程100例(11 ~ 15) Python3算法 ...

  3. Python3算法基础练习:编程100例(11 ~ 15)

    往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) Python3算法基础练习:编程100例(11 ~ 15) 11.兔子问题 1 ...

  4. Python3算法基础练习:编程100例( 31 ~ 35 )

    上期文章: Python3算法基础练习:编程100例( 26 ~ 30) 目录 31 判断星期几 32 反序输出列表 33 分隔列表 34 函数调用 35 文本加颜色 31 判断星期几 题目:请输入星 ...

  5. Python3算法基础练习:编程100例( 26 ~ 30)

    上期文章: Python3算法基础练习:编程100例( 21~ 25) 目录 26 递归求 20! 的阶乘 27 字符串反转 28 猜岁数 29 整数打印每一位数字 30 回文数 26 递归求 20! ...

  6. Python3算法基础练习:编程100例(6 ~ 10)

    往期练习: Python3算法基础练习:编程100例(1~5) Python3算法基础练习:编程100例(6 ~ 10) 6.斐波那契数列 7.列表复制 8.乘法口诀表 9.暂停输出 10.格式化时间 ...

  7. Interview之AI:人工智能领域岗位求职面试—人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础、ML算法简介、DL算法简介)来理解技术交互流程

    Interview之AI:人工智能领域岗位求职面试-人工智能算法工程师知识框架及课程大纲(AI基础之数学基础/数据结构与算法/编程学习基础.ML算法简介.DL算法简介)来理解技术交互流程 目录 一.A ...

  8. Girls In AI:面向编程零基础女孩子的AI算法工程师养成计划

    Github:YZHANG1270/Girls-In-AI Coding is the new sexy. GirlsInAI(GIA) 是一个面向编程 零基础 的AI算法工程师养成计划.鼓励更多的女 ...

  9. 送书 | 你一定能看懂的算法基础书(代码示例基于Python)

    本文引自图灵教育<算法图解> 你一定能看懂的算法基础书:代码示例基于Python:400多个示意图,生动介绍算法执行过程:展示不同算法在性能方面的优缺点:教会你用常见算法解决每天面临的实际 ...

  10. python编程零基础-编程零基础应当如何开始学习 Python?

    看到问题关于<编程零基础应当如何开始学习 Python?>,其实是在Python未来会很火的一个基础条件下,但是我觉得光光说学习Pyhon这件事,你首先得明白三件事: --如何判断你学习编 ...

最新文章

  1. bug诞生记——隐蔽的指针偏移计算导致的数据错乱
  2. 免费直播:1小时带你体验Python车牌识别实战
  3. elasticsearch扩展ik分词器词库
  4. 信息系统项目管理师-组织级项目管理与大型项目管理知识点
  5. 索非亚机器人的采访_还记得曾经扬言要“毁灭人类”的机器人索菲亚吗?如今过成这样...
  6. GridView 批量删除,自定义分页,定位页码
  7. 支付业务与技术架构学习总结(4)——对账相关业务知识及对账系统总结
  8. linux 命令 单词,linux常用命令的英文单词缩写
  9. java graphics dispose_Graphics.Dispose 方法 (System.Drawing) | Microsoft Docs
  10. 苹果电脑如何正确断网?macOS操作系统断网方法
  11. CFS完全公平调度类
  12. 如何做好离职交接工作?
  13. 侠客风云传服务器维护,侠客风云传服务器地址
  14. selenium+phantomjs截长图踩坑
  15. java js页面提示报警声音
  16. 固态硬盘在IDE、AHCI模式下的速度对比
  17. Java传输文件使用Base64优化传输速率。
  18. YUV编码为HEVC(H.265)
  19. WebStorm开发应用——前端页面
  20. C++程序运算时间计算

热门文章

  1. 【深度学习】损失函数记录
  2. VirtuoZo数字摄影测量(三)——影像匹配、DEM生成和正射影像拼接
  3. ArcGIS 视域分析
  4. 教务管理系统C++实现
  5. 项目:聊天室思路(linux下实现,语言:C/C++)
  6. Android 属性动画简单分析(一)
  7. cd40系列芯片_IC集成电路型号大全及40系列芯片功能大全
  8. python越学越不懂_为什么那么多自学Python的后来都放弃了,总结以下原因
  9. python-excel写入代码
  10. linux目录常用命令