刷LeetCode题目一周,主要采用C++和Python编程手段,截至目前做了5道简单的leetcode题目,做下阶段性的小结:

小结主要通过手撕代码,复习加回顾,尽量避免自己眼高手低的情况发生,对于自己还不熟悉的内容,再次标注出来吗,以下是手撕代码的记录:

Python实现:

第二遍编程中出现的问题和不熟的地方,都已标注出来,着重复习,

 class Solution:
"""
注意:
1. Python预研在处理负数时,最好将其转换成正数,然后最后把结果乘-1
2. 学到了一种赋值+判断的写代码方式
"""
def ReverseNum(self,num:int)->int:
rev = 0;
temp:int = num if num>0 else -num
while (temp):
pop = temp%10
rev = rev*10 + pop
temp = temp//10 INT_MAX = pow(2,31)-1
INT_MIN = pow(2,31)*(-1) if num > 0:
if rev > INT_MAX:
return 0
else:
if (-rev) < INT_MIN:
return 0
return rev if num>0 else -rev """
注意:

"""
def isPalindrome(self,num:int)->bool:
if num < 0:
return False
rev = 0
temp = num
INT_MAX = pow(2,31)-1
while(temp):
pop = temp%10
rev = rev*10 + pop
temp = temp//10 if (rev != num):
return False
return True """
注意:
1. 当长度为1的时候,for循环中的算法将不起作用
2. python的字符串没有最后的'\0',因此一定要考虑最后一个越界的影响
"""
def romanToNum(self,strs)->int:
table = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'m':1000} if (len(strs) == 1):
return table[strs[0]]
rev = 0
for i in range(len(strs)-1):
if table[strs[i]] < table[strs[i+1]]:
rev -= table[strs[i]]
else:
rev += table[strs[i]]
return (rev + table[strs[i+1]]) """
注意:
当输入为空列表时,需要第一个if判断
当输入列表含有空字串时,则需要return时判断i的值是否大于0
"""
def longestCommonPrefix(self, strs)->str:
if len(strs)==0:
return "" for i in range(len(strs[0])):
for j in range(1,len(strs)):
if i>=len(strs[j]) or strs[0][i] != strs[j][i]:
return strs[0][0:i] if i>0 else ""
return strs[0]

C++实现

 class Solution{
public:
int ReverseNum(int num);
bool isPalindrome(int num);
int RomanToNum(string RomanStr);
string longestCommonPrefix(vector<string> &strs);
}; int Solution::ReverseNum(int num)
{
long long rev = ;
int temp = num;
while(temp)
{
int pop = temp%;
rev = rev* + pop;
temp = temp/;
if(rev < INT_MIN || rev > INT_MAX)
{
return ;
}
}
return rev;
}; /*
注意:
1. 数据在发生反转的时候,一定要考虑溢出的情况,C++中可以采用更宽字节类型的变量来暂存结果,python可能需要溢出
*/
bool Solution::isPalindrome(int num)
{
if (num < ){
return false;
}
long long rev = ;
int temp = num;
while(temp)
{
int pop = temp%;
rev = rev* + pop;
temp /= ;
}
if (num != rev)
return false;
return true;
}; /*
注意:
1. 再次重温了下map的使用方式
*/
int Solution::RomanToNum(string RomanStr)
{
int rev = ;
if (RomanStr.empty())
return ;
map<char,int> table = {
{'I',},
{'V',},
{'X',},
{'L',},
{'C',},
{'D',},
{'M',}
}; int length =RomanStr.size();
for(int index=; index<length; index++)
{
if(table[RomanStr[index]] < table[RomanStr[index+]])
{
rev += (-) * table[RomanStr[index]];
continue;
}
rev += table[RomanStr[index]];
}
return rev;
}; /*
注意:
1. vector的使用方法
2. substr的使用方法
3. C++中对于字串返回可以直接返回""",不像python要注意返回空字串和空列表的区别
*/
string Solution::longestCommonPrefix(vector<string> &strs)
{
if (strs.size()== || strs[].size()==)
{
return "";
} for(int i=; i<strs[].size(); i++)
{
for(int j=; j<strs.size(); j++)
{
if (strs[][i] != strs[j][i]){
return strs[].substr(,i);
}
}
}
return strs[];
}

【LC_Overview1_5】---学会总结回顾的更多相关文章

  1. [C#] C# 知识回顾 - 学会处理异常

    学会处理异常 你可以使用 try 块来对你觉得可能会出现异常的代码进行分区. 其中,与之关联的 catch 块可用于处理任何异常情况. 一个包含代码的 finally 块,无论 try 块中是否在运行 ...

  2. [C#] C# 知识回顾 - 学会使用异常

    学会使用异常 在 C# 中,程序中在运行时出现的错误,会不断在程序中进行传播,这种机制称为“异常”. 异常通常由错误的代码引发,并由能够更正错误的代码进行 catch. 异常可由 .NET 的 CLR ...

  3. 技术|程序员必须要学会Google搜索技巧

    程序员必须要学会Google搜索技巧 摘要: 因为Google在我天朝被墙,学FQ请通过Bing进行搜索如何FQGoogle搜索技巧我曾经多次劝我的另一个朋友花10分钟学习一下Google通配符的使用 ...

  4. 2015.12.29~2015.12.30真题回顾!-- HTML5学堂

    2015.12.29~2015.12.30真题回顾!-- HTML5学堂 吃饭,能够解决饥饿,提供身体运作机能.练习就像吃饭,强壮自己,提升编程技能,寻求编程技巧的最佳捷径!吃饭不能停,练习同样不能停 ...

  5. [原创]AHA大会回顾

    AHA大会回顾 缘起 AHA之前参加了Daniel的培训,了解到AHA大会,觉得很高大上,开始有些心动.考虑到是工作时间,而且是外地,所以也就停留在心动层面了.之后与伯薇和四正吃饭,听说他们要去参加这 ...

  6. FMDB 二次封装工具类,让你快速学会封装,集成数据库

    来源:StrivEver 链接:http://www.jianshu.com/p/4c77aee0b41c 上个版本为了增加用户体验,部分页面集成了离线缓存数据功能,于是就在项目里使用了数据库管理离线 ...

  7. 学会Func

    学会Func 前言 首先你要会最基本的委托的使用,如果不会,看起来可能会有难度.. 不过第一个例子将帮你复习一下委托delegate 接下来通过几个例子就会学会怎么灵活使用Func了   委托回顾(d ...

  8. iOS回顾笔记( 02 ) -- 由九宫格布局引发的一系列“惨案”

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  9. 九天学会Java,第二天,算术运算

    算术运算 先回顾上次我们提到的编程特性 变量和数据类型,赋值和输出 算术运算 选择结构 循环结构 函数定义,函数调用 变量作用域 栈,程序运行的基石 面向对象 异常处理 语言提供的公用包 第一天我们讲 ...

随机推荐

  1. Python--day45--pymysql操作数据库详细

    1.一个pymysql往数据库提交数据的简单例子: import pymysql # user = "eric" # pwd = '123123' #增加 conn = pymys ...

  2. Vue的第一个实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. angular 全局常用指令

    1.全局支持 enter快捷键触发事件 // 全局指令 app.directive('ngEnter', ['$window',"$timeout", ($window,$time ...

  4. ZR并查集专题

    ZR并查集专题 并查集,作为一个基础算法,对于初学者来说,下面的代码是维护连通性的利器 return fa[x] == x ? x : fa[x] = getf(fa[x]); 所以,但是这对并查集的 ...

  5. HTML常用布局

    一般的局部布局无非采用如下的技术: 1)div + ul(ol)-li:用于分类导航或菜单等场合     2)div + dl-dt-dd:用于图文混编场合     3)table-tr-td:用于图 ...

  6. 2018-11-9-win2d-CanvasCommandList-使用方法

    title author date CreateTime categories win2d CanvasCommandList 使用方法 lindexi 2018-11-9 20:8:4 +0800 ...

  7. Java 学习笔记(14)—— 文件操作

    java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...

  8. python 找出字符串中出现次数最多的字母

    # 请大家找出s=”aabbccddxxxxffff”中 出现次数最多的字母 # 第一种方法,字典方式: s="aabbccddxxxxffff" count ={} for i ...

  9. mybatis精讲(六)--二级缓存

    目录 简介 配置 源码 CachingExecutor 自定义二级缓存 # 加入战队 微信公众号 简介 上一章节我们简单了解了二级缓存的配置.今天我们详细分析下二级缓存以及为什么不建议使用二级缓存. ...

  10. Apache Derby-02通过IJ简单操作DERBY

    上回说到了Derby的历史以及需要准备的环境,这章将为大家介绍Apache Derby的简单操作 1.配置Derby环境 1.1去官网下载Derby_BIN并解压在文件夹中 http://mirror ...