前言:
1) 操作场景是编程中的边沿处理
2) 思想: 把不同的地方经过处理变成逻辑上相同的, 长和if结合使用
3) 分类有两种:
上式:预先补齐,使得没有边沿的区别。
下式:事后修正,先放任结果中的边沿瑕疵,最后修理它
案例:
package day1; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class cutflush { /** * 一刀切 */ public static void main(String[] args) { pyramid4(); } // 做法1 虾米级 public static void pyramid1(){ List list = new ArrayList(); String testStr = "abc ttt,kmd,uuu xyz"; String[] subs0 = testStr.split(" "); for(int i=0; i<subs0.length; i++){ String subs1 = subs0[i]; String[] subs10 = subs1.split(","); for(int j=0; j<subs10.length; j++){ list.add(subs10[j]); } } String[] arrys = (String[]) list.toArray(new String[list.size()]); //Arrays.toString(arrys) System.out.println(Arrays.toString(arrys)); } /** * 一刀切之上式:预先补齐 * 0 用逗号或空格分隔的串,提取出各个部分 * 1 观察发现除了xyz外每个字符串后都跟着一个特殊字符,或者空格 * 2 将最后的字符串xyz后面也跟上,或者空格,保证处理所有字符串特征一致(--->这就是预先补齐表达的含义) */ public static void pyramid2(){ String testStr = "abc ttt,kmd,uuu xyz"; String tempStr = ""; testStr += ","; for(int i=0; i<testStr.length(); i++){ char tempChar = testStr.charAt(i) ; if(tempChar == ' ' || tempChar == ','){ System.out.println(tempStr); tempStr = ""; }else{ tempStr += testStr.charAt(i) ; } } } /** * 一刀切之下式:事后修正法 ---> 先放任结果中的边沿瑕疵,最后修理它 * 0 将字符串用,分隔并输出 */ public static void pyramid3(){ String testStr = "abcttt"; StringBuilder sb = new StringBuilder(); for(int i=0; i<testStr.length(); i++){ char tempChar = testStr.charAt(i); sb.append(",").append(tempChar); } String result = sb.substring(1, sb.length()); System.out.println(result); } /** * 一刀切之上式:通话时间案例 * 某个用户的开始通话时间为: 12:38:15 结束通话时间为: 12:39:16 则该用户通话时长为:62秒 对于一般的情况,可能需要考虑:跨分钟,跨小时,跨零点的问题。 */ public static void pyramid4(){ String s1 = "23:59:9"; String s2 = "00:59:8"; 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; System.out.println("hour: " + hour + " min: " + min + " second: " + sec); int time = hour * 60 * 60 + min * 60 + sec; System.out.println("通话时间长度为:"+time+"s"); String ans = ""; if(hour>0){ if(min > 0){ if(sec > 0){ ans=hour+"小时"+min+"分"+sec+"秒"; }else{ min = min -1; sec = sec + 60; ans=hour+"小时"+min+"分"+sec+"秒"; } }else{ hour = hour - 1; min = min + 60; if(sec > 0){ ans=hour+"小时"+min+"分"+sec+"秒"; }else{ min = min -1; sec = sec + 60; 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);//加入到list t = ""; } else { t += c; } } return list; } }
相关推荐
高清彩版 编程之法_面试和算法心得_高清带完整书签 最新版
一刀切_约束下的矩形件优化排样算法比较与整合研究_刘倩
C语言常用算法程序集配书程序
开源编程算法_C++_C_下载.zip
编程只是敲代码,最重要的是什么呢?就是核心思想,就是编程算法。
这是学习《计算机算法基础》中贪心方法时写的一个“实现一个更快的作业排序”程序,结果绝对正确!
VB常用数值算法集1 VB常用数值算法集1
( _一刀切_排样问题的遗传算法与蚁群算法整合研究_李伟.caj ),排料一刀切优化问题
美国大学生数学建模竞赛的一些常用算法,比较重要,比较常用
蚁群算法的matlab编程思路,代码简单,实用
详细介绍了神经网络算法、粒子群算法、遗传算法、模糊逻辑控制、免疫算法、蚁群算法、小波分析算法及其MATLAB的实现方式等内容; 第二部分详细介绍了智能算法的工程中的应用问题,包括模糊神经网络在工程中的应用、...
嵌入式系统软件设计中的常用算法(完整版)
竞争性编程所需的算法_C++_Java_下载.zip
旅行商问题TSP的基本解法,运用matlab进行编程,采用遗传算法
Goldstein的枝切法解包裹算法可以在光栅法三维重建时由相对相位求取绝对相位。
一些MATLAB算法小程序,EM算法,CART算法等
枝切法解包裹,效果比一般算法好,解包裹出来的还原度高
算法导论与比赛常用算法示例_第1版 算法导论 ACM竞赛 编程比赛 资料
都是C语言常用的算法
一种新的配电网潮流算法_改进牛顿_拉夫逊法_顾洁,摘要 上海交通大学