}
第二题:
====
整数反转:
第二题自己第一次看到题目写出来的代码:
卡在了样例 最大数 最小数 乘以十,加上末位数的反转的最后一步,实际上这个是考验核心思想和数学理论的重要一步,最后四个样例没RUN过去属于考虑不周了。
我的第一次错误的源代码:
class Solution
{
public int reverse(int x)
{
int left=-(int)Math.pow(2,31);
int right=-(int)(1-Math.pow(2, 31));
if(x==0||x>right||x<left)
return 0;
else if(x<0)
return -doi(-x);
else
return doi(x);
}
public int doi(int x)
{
int xl=(x+“”).length();
//判定最后一位数是不是0,防止颠倒过来,举例不止120,如果是1200呢?
boolean flag=true;
while(flag)
{
if(x%10==0)
{
x=x/10;
xl=xl-1;
}
if(x%10!=0)
flag=false;
}
int arr[]=new int[10];
for(int i=0;i<xl;i++)
{
arr[i]=x%10;
x=x/10;
}
// for(int i=0;i<xl;i++)
// {
// System.out.println(arr[i]);
// }
int target=0;
for(int j=0;j<xl;j++)
{
target=target+(arr[j]*(int)Math.pow(10, xl-1-j));
}
return target;
}
}
本题初始的想法想的较多,想的是本题的
整数反转,初始考虑较多,想的是要不要分正负,负数的符号怎么做处理,如果最后末位是一个0或者多个0的话怎么处理,如何反转
如下的代码可以实现求一串数字的长度:
int x=123456;
int len=(x+“”).length();
System.out.println(len);
其实根本不用分析如上问题,不用知道这个数字有几位,
在Java中:
分为顺序结构和循环结构
循环结构又分为 四种
for while do while foreach、
其中 do while用的是相当少的
for和while中,大多数情况下
for需要知道具体循环的次数
while需要知道循环的终止条件
此处补充关于JAVA中循环的基础入门知识点:
break:提前结束循环,
continue:结束本躺循环
break:提前结束循环 如一个循环100次,进行到第二次 碰到break
剩下的98次不会执行
而如果是continue,则是进行到当前,立马跳过去下一次
switch
loop loop 指的是循环 ,break不能在除了 switch和loop外的中断
for(表达式1,表达式2,表达式3)
{
循环体;
}
执行顺序:
1、表达式1:只执行一次。初始化。
2、判断表达式2是否为真。
3、循环体
4、表达式3;
第二趟 开始 就不走表达式1的初始化了
从表达式2开始走
2、判断表达式2是否为真。
3、循环体
4、表达式3;
如果没有表达式2 那么JAVA认为他 永远为真
通过for循环来写一个死循环
for( ; ; )
{
循环体;
}
言归正传:在本题(第二题)可以一个while走天下!
本题举例 如数字
x=-1 234 500
他是个负数,末尾还有0
对他进行反转,
首先 末位数 last=x%10=0
反转数 int rev=0
rev=rev*10+last;
这样如果末位数是个0
初始
rev=0*10+0
然后还有一个0
rev=(0*10+0)*10+0
后面的两个0都不会因为反转被摆在第一位第二位
这时候该对五进行反转
-123 450 0已经经过两次除10操作,把0全部去掉了
x=x/10两次,此时的x已经是 -12345了
然后 -12345%10==-5
last=-5(随着末位数last被除10弹出,负号也自带出来啦)
rev=0+(-5)
x=x/10=-12345/10=-1234
last=-1234%10=-4
rev=(0±5)*10+(-4)
顺次下去,三句话完成任意整数反转
while(x!=0)
{
last=x%10;
x=x/10;
rev=rev*10+last;
}
这时候一定有小伙伴在刷第一题是对官方题解(JAVA版本)中的 Integer.MAX_VALUE一头雾水,心里想:我擦,这是个什么妖魔鬼怪。
if(rev>Integer.MAX_VALUE||rev<Integer.MIN_VALUE)//这行代码是核心关键哦
{
return 0;
}
这一定是很多好兄弟的心声,刚想明白了while循环怎么写
这怎么还要对最大值做判断捏?刚降了一个妖怎么又来了一个魔?
下面请看详解:
官方题解中给出的int 是 JAVA八大基本数据类型(八个基本数据类型,也即是 int,long,short,double,byte,float,String,boolean )中用的比较算是最多的一个帅气的小伙伴
而他的包装类Integer和他长得截然不同
相信冲着入门JAVA这门语言来的兄弟们都对类久闻大名了,我们这里不做赘述
记得他是包装类就好
Integer类就相当于 你这个人的个体
而Integet.MAX_VALUE相当于你的巅峰身高!200cm!
也可以理解为 c语言中的宏定义 #define MAX_VALUE 2147483647
这就够用啦~
以下代码建议老铁们动手敲一敲,运行一下,观察观察结果哦,具体为什么是这样,
先放个图在这里呀,
其他的基本数据类型包装类有没有最大值最小值呢?
(如char,boolean)(对啦,只有 int 和char的包装类不是首字母大写呀,分别是 Integer和Character)
有了最大值最小值后,他们最大值加一和最小值减一的结果会是什么呢?~
会在后续的帖子中更新出来哦,动动小手点个关注呗你的一键三连是对狗红日最大的支持耶!
package the.test;
//本文档旨在测试八个基本数据类型,也即是 int,long,short,double,byte,float,String,boolean
public class Testj
{
public static void main(String[] args)
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-rYMFvoih-1712752099419)]
react和vue的比较
相同
1)vitual dom
2)组件化
3)props,单一数据流
不同点
1)react是jsx和模板;(jsx可以进行更多的js逻辑和操作)
2)状态管理(react)
3)对象属性(vue)
4)vue:view——medol之间双向绑定
5)vue:组件之间的通信(props,callback,emit)
[外链图片转存中…(img-iVIPJdXG-1712752099419)]
[外链图片转存中…(img-ZNJC04zP-1712752099419)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-QevUMQoT-1712752099420)]