第五天:
算法:回文数:判断一个整数例如121,12021,首和尾是否相等,次首和次尾是否相等
一次类推
第一种方法:转为字符串再转字符逐个判断
问题:如何将整数转换为字符串比较
可以采用第一种Integer.toString()方法
class solution{
public boolean ishuiwen (int x){
String s = Integer.toString(x);
if(x>=0){
for(int i = 0;i<s.length()/2;i++){
if(s.charAt(i)!=s.charAt(s.length()-1-i)){return false;}}
return true;
}else{return}
}
}
第二种:半转(优化)
问题:就整数而言,两种情况不满足这个规律
第一种:小于0的整数
第二种:不等于0但是用它对10取余等于0
问题:我们如何反转后半部分的数字,类似于之前的数字反转的思想
先将这个数对10取余,再除以10,再取余。之后末尾数乘以10加上倒数第二个数
重复这个过程
问题:如何知道反转后的数字是原数字一半长度
当反转后数字比原始数字大
当原始数字数位为奇数时,会发现当反转后x==reveredNumber/10
当原始数字位数为偶数时,会发现反转后x=reveredNumber
class soluton{
public boolean ishuiwen (int x){
if(x<0||(x%10==0&&x!=0)){return false;}
int reveredNumber = 0;
while(x>reveredNumber){
reveredNumber = reveredNumber*10+x%10;
x/=10;}
return x==reveredNumber/10||x==reveredNumber;}
}
数据库:上升的温度
问题1:如何表示连续两天温度
利用SQL中的DateDiff函数计算时间差
例如:DataDiff(Weather.recordDate,W.recordDate)=1(相隔天数)表示
两个对象的时间差为1
问题2:如何寻找自己表中的对象判断比较
通过内连接表
创建一个Weather表的新对象W通过join和on关键词来比较
SELECT Weather.id AS 'Id' FROM Wheather
JOIN Weather W ON DateDiff(Weather.recordDate,W.recordDate)=1
AND Weather.Temperature>W.Temperature;
总结:
算法:回文数可以通过两种方法来判断:
第一种通过整数转为字符串,再转字符,通过一个for循环来比较
第二种半转整数,通过一个while语句实现
第一步:先根据要求判断出他的数值范围
第二步:while语句判断还没有反转的原始数据和反转后的数据比较大小,如果原始数据大,则进行
语句中通过类似于前面的整数反转题目,将整数反转,
当反转后的数的位数大于等于原始数据 前半部分
第三步:返回原始值与反转后值得比较
分两种情况第一种原始数据位数为奇数,那么反转后的数据比原始数据前半部分多一位,通过数据观察除以10就符合了
当原始数据时偶数时,就直接判断前半部分与反转后的数据是否相等
数据库:同一个表中高的温度
用于比较同意个表中的温度
也可以类似于java语言中的创建一个内连接对象,用DateDiff函数来计算两者天数之间的天数差
通过join on内连接来实现同意表中的两个id对象的比较