Algorithm
Palindrome Number
Determine whether an integer is a palindrome. An integer is a palindrome when it reads the same backward as forward.
Example 1:
Input: 121
Output: true
Example 2:
Input: -121
Output: false
Explanation: From left to right, it reads -121. From right to left, it becomes 121-. Therefore it is not a palindrome.
Example 3:
Input: 10
Output: false
Explanation: Reads 01 from right to left. Therefore it is not a palindrome.
Coud you solve it without converting the integer to a string?
检测一个 int 是否是回文数,就是颠倒顺序以后是和原来的数相等。首先有几种特殊情况直接排除掉:
- 负数直接返回false
- 大于等于0并且小于10的数直接返回true
- 大于等于10的数,如果末位是0直接返回false(这条是在写代码时发现的)
public class Solution {
public bool IsPalindrome(int x) {
bool result = false;
if (x > 10)
{
int y = 0;
for (int i = 0; ; i++)
{
int t = x % 10;
y = y * 10 + t;
x = x / 10;
if (i == 0 && y == 0)
{
break;
}
if (y == x || (y > 0 && (y * 10 + x % 10) == x))
{
result = true;
break;
}
else if (y > x || (y + x % 10) > x)
{
break;
}
}
}
else if (x >= 0 && x < 10)
{
result = true;
}
return result;
}
}
在检测的时候需要考虑到位数为偶数和奇数的情况,然后我自己增加了一个简单的判断,当从末位开始生成的数大于剩余部分的数,也就是遍历到了中间位置还没能满足条件就可以直接跳出循环。
Review
- 这周看到一个视频,自己学习的10大方法(My Top 10 Learning Methods For Self Taught Developers),链接是:https://www.youtube.com/watch?v=raoOoWU7DI0
- 视频前面介绍的学习网站有需要的可以了解下
- 读书,概念相关的,编程相关的,例如 clean code
- 音频书和podcasts,其中有介绍到的一个 Codepen radio,我自己看了下每期的主题还不错,不过英语还需要提高。
- 写教程和博客,写教程的过程也是理论结合实践的过程,写博客更多的整理自己的知识点和思路。
- 网上课堂学习,当了解一个新知识可以从 Free Code camp开始,其实就是从相关活跃的论坛或者社区开始。网上有的课程也是很系统的,不过我个人还没有在网上很系统的学习过,更多的是针对某个技能或者某种语言。
- 多和其他人交流,朋友、同事。方式有很多种线上线下,或者社交活动。
- 多运行code例子,在github上下载代码,运行代码,然后去查看和分析代码,对于感兴趣的项目可以和作者进行交流,或者贡献一份力量。
- 视频教程
- 有目的去学习,或者和结合实际项目去学习,这样更有动力。(视频中提到的:Udemy,Pluralsight,lynda.com)
- 文档,官方的介绍文档等等
- 通过学习创建一个属于自己的项目,用到你学到的内容。学习要有产出。
- 每个人都有适合自己的学习方式,找到适合自己的方法就可以。
Tips&Share
- 上周在本地安装 vscoder 的时候报错:缺少 /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.21’和GLIBCXX_3.4.20,主要原因是 libstdc++.so.6 需要更新,在网上找了很多方法,直接用 yum update 不能解决问题,通过 find / -name “libstdc++.so*” 也没能找到更高版本的 so.6 文件。最后总结的基本方案是:先手动升级 gcc,然后再什么查找库文件,如果没有直接更新到系统中就需要通过下面的过程进行处理:
原文链接:https://www.linuxidc.com/Linux/2017-10/147621.htm
执行以下命令,查找编译gcc时生成的最新动态库:
find / -name “libstdc++.so*”
输出如下:
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6
/home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.21 //最新动态库
/home/gcc-5.2.0/gcc-temp是升级gcc时的输出目录。
将上面的最新动态库libstdc++.so.6.0.21复制到/usr/lib64目录下:
cp /home/gcc-5.2.0/gcc-temp/stage1-x86_64-unknown-linux-gnu/libstdc+±v3/src/.libs/libstdc++.so.6.0.21 /usr/lib64
复制后,修改系统默认动态库的指向,即:重建默认库的软连接。
切换工作目录至/usr/lib64:
cd /usr/lib64
删除原来软连接:
rm -rf libstdc++.so.6
将默认库的软连接指向最新动态库:
ln -s libstdc++.so.6.0.21 libstdc++.so.6
默认动态库升级完成。重新运行以下命令检查动态库:
strings /usr/lib64/libstdc++.so.6 | grep GLIBC
最后我直接更新了本地的系统,实在是比较老了。
- u 盘安装centos7步骤:https://www.augsky.com/599.html 镜像下载地址(阿里):https://opsx.alibaba.com/mirror
主要分两步:下载镜像,使用UltraISO制作u盘安装工具;通过U盘安装centos
其中需要注意的是安装部分:在安装提示界面 按 tab 键,然后输入 :vmlinuz initrd=initrd.img Linux dd quiet 。查到u盘的盘符以后重启,然后在安装提示界面按 tab 键,输入vmlinuz initrd=initrd.img inst.stage2=hd:/dev/sdb4 quiet。其中 “sdb4” 就是U盘对应的盘符。
- 安装过程需要注意的地方:需要指定安装盘;默认是最小安装,需要自己选择安装的类型;默认网络是关闭,可以在安装界面设置网络打开。
- 查看本机 centos 版本信息
原文链接:https://blog.csdn.net/shuaigexiaobo/article/details/78030008
我用这个方法:cat /etc/issue 查看版本,其他方法可以查看原文链接。
- CentOS 各版本说明
以CentOS7.0 为例下载各版本说明(参考链接:https://blog.csdn.net/u011341352/article/details/82812054)
CentOS-7.0-1406-x86_64-DVD.iso 标准安装版,一般下载这个就可以了
CentOS-7.0-1406-x86_64-NetInstall.iso 网络安装镜像
CentOS-7.0-1406-x86_64-Everything.iso 对完整版安装盘的软件进行补充,集成所有软件。
CentOS-7.0-1406-x86_64-GnomeLive.iso GNOME桌面版
CentOS-7.0-1406-x86_64-KdeLive.iso KDE桌面版
CentOS-7.0-1406-x86_64-livecd.iso 光盘上运行的系统,类拟于winpe
(1)CentOS-xxxx-LiveCD.ios 和CentOS-xxxx-bin-DVD.iso有什么区别?
前者只有700M,后者有3.8G。其差别不仅仅在大小上,其更本质的差别是,CentOS-xxxx-LiveCD.ios只能加载到内存里运行,不能安装。CentOS-xxx-bin-DVD1.iso才可以安装到硬盘上。
(2)CentOS-xxx-bin-DVD1.iso,CentOS-xxx-bin-DVD2.iso分别是干什么的?
前者是3.8G,后者是500M。其差别是DVD1是CentOS的安装文件,DVD2是CentOS的一些软件(就简单实用CentOS来说是不需要的)。
- 重新安装以后发现gcc还是需要升级,所以建议在docker上安装code-server,具体的安装方法github上有:https://github.com/codercom/code-server。 后续在学习docker的时候会试验下。
- 关于 centos 初步学习的教程会在下个星期整理完成,一篇单独的文章。