算法基础——1.5一刀切法

本文深入探讨了算法中的1.5刀切法,通过实例详细解释了其原理和应用,帮助读者理解这一核心算法思想。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

例一:

/*
  "abc ttt,kmd,uuu xyz" 
  用逗号或空格隔开字符串
  分解为各个部分

*/

public class T1
{
	public static void main(String[] args)
	{
		String s = "abc ttt,kmd,uuu xyz";
		String s2 = "";
		// 一刀切 (上式: 事先补齐法)
		s = s + " ";
		for(int i=0; i<s.length(); i++){
			char c = s.charAt(i);
			if(c==' ' || c==','){
				System.out.println(s2);
				s2 = "";
			}
			else
				s2 = s2 + c;
		}
	}
}

例二:

/*
"abcd" ==> "a,b,c,d"
每个字母间加逗号
*/

public class T2
{
	public static void main(String[] args)
	{
		String s = "abcd";
		String s2 = "";
		for(int i=0; i<s.length(); i++){
			s2 += "," + s.charAt(i);
		}
		// 一刀切 (下式: 事后修正法)
		System.out.println(s2.substring(1));
	}
}

例三:

/*编程
假设手机通话时间不会大于24小时。<=24
某个用户的开始通话时间为: 12:38:15
结束通话时间为: 12:39:16
则该用户通话时长为:62秒
对于一般的情况,可能需要考虑:跨分钟,跨小时,跨零点的问题。
如果已知了开始和结束时间,试编程求通话时长。
时间格式为:hh:mm:ss
小时采用24小时制
提示:关键在于如何处理,能把貌似不同的特殊情况转化为一致的普通情况。*/

public class Homework5 {

	public static void main(String[] args) {
		String beg = "23:42:17";
		String end = "03:48:24";
		int time = talkTime(beg, end);
		if (time <= 60) {
			System.out.println("通话时间:"  + "00:" + "00:" + time);
		}
		else if (time <= 60*60) {
			System.out.println("通话时间:" + "00:" +  time/60 + ":" + time%60 );
		}
		else {
			System.out.println("通话时间:" + time/(60*60) + ":" + (time/60 - time/(60*60)*60)%60 + ":" + time%60 );
		}
	}
	
	private static int talkTime(String st1,String st2) {
		int time = toSce(st2) - toSce(st1) + 1;
		if (time < 0) {
			time = 24*60*60 + time; 
		}
		return time;
	}
	
	private static int toSce(String st) {
		int hh = Integer.valueOf(st.substring(0, 2));
		int mm = Integer.valueOf(st.substring(3, 5));
		int ss = Integer.valueOf(st.substring(6, 8));
		int time = hh*60*60 + mm*60 + ss;
		return time;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值