leetcode第七题(easy)——Reverse Integer

本文探讨了三种改进的整数反转算法,包括字符串操作、循环判断溢出和使用long类型辅助判断溢出的方法,旨在提高算法效率并避免常见的溢出问题。

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

题目描述如下:

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

我为这道题尝试了3种解法,一开始的解法运行时间为499ms,觉得太慢了,于是在网上参考了别人的思路,的确是快了一些,但是后来觉得在刷题的时候没这必要,运行出来就行了。三种解法的思路及代码如下:

1.首先判断是正数还是负数,设置一个res变量,负数为true,正数为false。然后再将整数转成字符串,由于StringBuffer和StringBuilder有反转的方法,于是构造一个stringbuffer对象,将其反转后再变为字符串,最后再将字符串转成Int类型,此处要捕获异常,当溢出时返回0。
public int reverse1(int x){//499ms
		boolean res=false;
		String s;
		if(x>0){
			s=""+x;
		}else{
			x=-x;
			s=""+x;
			res=true;
		}
		StringBuffer sb = new StringBuffer(s);
		s = sb.reverse().toString();
		try{
			x = Integer.parseInt(s);
		}catch(NumberFormatException e){
			System.out.println(e);
			return 0;
		}
		if(res){
			return -x;
		}else{
			return x;
		}
	}
2.这个是参考别人的,但是不是很了解这个是怎么判断溢出的
public int reverse2(int x){//306ms
        int result = 0;  
        int mod = 0;  
        while(x != 0) {  
            mod = x % 10;  
            if (result > 0) {  
                if (result > Integer.MAX_VALUE/10 || (result == Integer.MAX_VALUE / 10 && mod > Integer.MAX_VALUE % 10))
                {  
                    return 0;  
                }  
            } else {  
                if (result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && mod < Integer.MIN_VALUE % 10))
                {  
                    return 0;  
                }  
            }  
            result = result * 10 + mod;  
            x /= 10;  
        }  
        return result;  
    }
3.这个思路更好理解,和第二种思路差不多,只不过判断溢出的方式不一样,设置一个long类型的testresult,通过result和testresult的比较,不相等就表示溢出了,则返回0;否则返回result
public int reverse3(int x) {  //305ms
        int result = 0;  
        int mod = 0;
        long testresult=0;
        while(x != 0) {  
            mod = x % 10;  
            result = result * 10 + mod;
            testresult = testresult * 10 + mod;
            x /= 10;  
        }  
        if(testresult!=result){
            return 0;
        }
        return result;  
    }  




有源向DC-DC变换器(Dual Active Bridge, DAB)是一种常用的高功率电力电子变换器,可以实现两个能源之间的向能量转换。使用MATLAB进行DAB变换器的仿真可以帮助我们了解其工作原理和优化控制策略。 首先,需要编写MATLAB代码来建立DAB变换器电路模型。可以使用Simulink模块进行建模,然后连接相应的电路元件,如二极管、开关、电容等。同时,还需要定义各个元件的数学模型,包括电容电压方程、电感电流方程、开关状态方程等。建立好电路模型后,就可以进行仿真了。 在进行DAB变换器的仿真时,需要定义输入和输出电压/电流的波形,以及开关状态的控制策略。可以通过MATLAB的信号源模块来定义输入电压/电流波形,并使用MATLAB中的控制算法来计算控制信号,根据控制信号来控制开关的状态。 在进行仿真时,可以观察输出电压/电流的波形与预期的是否一致。如果不一致,可以通过调整控制算法和参数来优化。此外,还可以通过仿真数据,分析DAB变换器的性能指标,如转换效率、功率因数、输出纹波等。 在完成仿真后,可以通过MATLAB的作图功能,绘制输出波形和性能指标的曲线。可以根据曲线的变化趋势,来判断系统的稳定性和性能优劣。 总结起来,使用MATLAB进行DAB变换器的仿真可以帮助我们理解其原理,并优化控制策略,同时还可以分析系统的性能指标。通过仿真,可以提前发现问题,并提出相应的解决方案,从而提高DAB变换器的工作效率和可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值