算法基础——1.5一刀切法

算法基础——1.5一刀切法_第1张图片

例一:

[java]  view plain copy
  1. /* 
  2.   "abc ttt,kmd,uuu xyz"  
  3.   用逗号或空格隔开字符串 
  4.   分解为各个部分 
  5.  
  6. */  
  7.   
  8. public class T1  
  9. {  
  10.     public static void main(String[] args)  
  11.     {  
  12.         String s = "abc ttt,kmd,uuu xyz";  
  13.         String s2 = "";  
  14.         // 一刀切 (上式: 事先补齐法)  
  15.         s = s + " ";  
  16.         for(int i=0; i
  17.             char c = s.charAt(i);  
  18.             if(c==' ' || c==','){  
  19.                 System.out.println(s2);  
  20.                 s2 = "";  
  21.             }  
  22.             else  
  23.                 s2 = s2 + c;  
  24.         }  
  25.     }  
  26. }  

例二:

[java]  view plain copy
  1. /* 
  2. "abcd" ==> "a,b,c,d" 
  3. 每个字母间加逗号 
  4. */  
  5.   
  6. public class T2  
  7. {  
  8.     public static void main(String[] args)  
  9.     {  
  10.         String s = "abcd";  
  11.         String s2 = "";  
  12.         for(int i=0; i
  13.             s2 += "," + s.charAt(i);  
  14.         }  
  15.         // 一刀切 (下式: 事后修正法)  
  16.         System.out.println(s2.substring(1));  
  17.     }  
  18. }  

例三:

[java]  view plain copy
  1. /*编程 
  2. 假设手机通话时间不会大于24小时。<=24 
  3. 某个用户的开始通话时间为: 12:38:15 
  4. 结束通话时间为: 12:39:16 
  5. 则该用户通话时长为:62秒 
  6. 对于一般的情况,可能需要考虑:跨分钟,跨小时,跨零点的问题。 
  7. 如果已知了开始和结束时间,试编程求通话时长。 
  8. 时间格式为:hh:mm:ss 
  9. 小时采用24小时制 
  10. 提示:关键在于如何处理,能把貌似不同的特殊情况转化为一致的普通情况。*/  
  11.   
  12. public class Homework5 {  
  13.   
  14.     public static void main(String[] args) {  
  15.         String beg = "23:42:17";  
  16.         String end = "03:48:24";  
  17.         int time = talkTime(beg, end);  
  18.         if (time <= 60) {  
  19.             System.out.println("通话时间:"  + "00:" + "00:" + time);  
  20.         }  
  21.         else if (time <= 60*60) {  
  22.             System.out.println("通话时间:" + "00:" +  time/60 + ":" + time%60 );  
  23.         }  
  24.         else {  
  25.             System.out.println("通话时间:" + time/(60*60) + ":" + (time/60 - time/(60*60)*60)%60 + ":" + time%60 );  
  26.         }  
  27.     }  
  28.       
  29.     private static int talkTime(String st1,String st2) {  
  30.         int time = toSce(st2) - toSce(st1) + 1;  
  31.         if (time < 0) {  
  32.             time = 24*60*60 + time;   
  33.         }  
  34.         return time;  
  35.     }  
  36.       
  37.     private static int toSce(String st) {  
  38.         int hh = Integer.valueOf(st.substring(02));  
  39.         int mm = Integer.valueOf(st.substring(35));  
  40.         int ss = Integer.valueOf(st.substring(68));  
  41.         int time = hh*60*60 + mm*60 + ss;  
  42.         return time;  
  43.     }  
  44. }  

你可能感兴趣的:(编程算法基础(java))