【ARTS】01_19_左耳听风-20190318~20190324-程序员宅基地

技术标签: 爬虫  数据结构与算法  

ARTS:

  • Algrothm: leetcode算法题目
  • Review: 阅读并且点评一篇英文技术文章
  • Tip/Techni: 学习一个技术技巧
  • Share: 分享一篇有观点和思考的技术文章

Algorithm

【leetcode】13. Roman to Integer

https://leetcode.com/problems/roman-to-integer/

1)problem

Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

Symbol       Value
I             1
V             5
X             10
L             50
C             100
D             500
M             1000

For example, two is written as II in Roman numeral, just two one's added together. Twelve is written as, XII, which is simply X + II. The number twenty seven is written as XXVII, which is XX + V + II.

Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:

  • I can be placed before V (5) and X (10) to make 4 and 9.
  • X can be placed before L (50) and C (100) to make 40 and 90.
  • C can be placed before D (500) and M (1000) to make 400 and 900.

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999.

Example 1:

Input: "III"
Output: 3

Example 2:

Input: "IV"
Output: 4

Example 3:

Input: "IX"
Output: 9

Example 4:

Input: "LVIII"
Output: 58
Explanation: L = 50, V= 5, III = 3.

Example 5:

Input: "MCMXCIV"
Output: 1994
Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.

2)answer

预想结果;

 result = M + ( M - C )  + (C - X) + ( V - I) = 1000 + 900 + 90 + 4

由于罗马数字通常从左到右从最大到最小。

"MCMXCIV"的实际值应该是:

M = 1000,CM = 900,XC = 90,IV = 4。

具体计算是;

 result = M + ( M - C )  + (C - X) + ( V - I) = 1000 + 900 + 90 + 4

C 100 被放在M 1000前面的时候,应该用减数M-C,然后:

# result = M + C
# temp = M - C
# result =  M + C + temp = M + C + M - C = M + M

因为+C-C抵消了,所以M+M=2000,和计划中的result = M + (M-C)就少了一个-C的步骤。这是错误的。

为了使当小数放在大数的结果正确,所以就要将-C的值补充回来。也就是 *2 的由来,才是正确的解法。

result += numral_map[s[i]] - 2 * numral_map[s[i-1]]

3)solution

class Solution(object):
    def romanToInt(self, s):
        """
        :type s: str
        :rtype: int
        """
        numral_map ={ "I":1,"V":5, "X":10,  "L":50, "C":100, "D":500, "M":1000 }
        result = 0

        for i in range(len(s)):
            if i > 0 and numral_map[s[i]] > numral_map[s[i-1]]:
                result += numral_map[s[i]] - 2 * numral_map[s[i-1]]
            else:
                result += numral_map[s[i]]

        return result

Review

【漏洞挖掘】10个绕过反病毒的恶意用户技巧

1)场景

概述10个需要注意的问题。绕过杀毒软件

2)问题难点

10个绕过反病毒的恶意用户技巧

3)解决问题的方法
介绍
添加防病毒软件信任名单策略
通过GUI禁用反病毒
终止反病毒软件进程
停止并禁用反病毒服务
通过调试设置禁用反病毒软件
卸载反病毒软件
从UNC路径或可移动媒体执行(U盘)
从备用数据流执行
从DLL执行
从文件系统外部执行
总结
4)方法细节

10个绕过反病毒的恶意用户技巧

https://www.cnblogs.com/17bdw/p/10575815.html

Tip

【安全开发】爬虫基础

1)场景

爬虫知识基础知识

2)问题难点

基础框架整理

3)解决思路
0x1、基础框架原理
1.1、爬虫基础
1.1、基础原理
1.2、发起HTTP请求-Request
1.3、获取响应内容-Response
1.4、练手库-Urllib
4)方法细节

爬虫基础

https://www.cnblogs.com/17bdw/p/10735127.html

Share

【业务】极客时间-左耳听风-程序员攻略-软件设计

1)场景

软件设计学习

2)问题难点

软件设计学习的资源

3)解决思路

程序员练级攻略:软件设计

  • 编程范式
  • 一些软件设计的相关原则
  • 一些软件设计的读物
4)方法细节

极客时间-左耳听风-程序员攻略-软件设计

https://www.cnblogs.com/17bdw/p/10591364.html

转载于:https://www.cnblogs.com/17bdw/p/10589946.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30702887/article/details/98886624

智能推荐

centos安装python学习环境和部署web网站_centos python 网站-程序员宅基地

文章浏览阅读596次。### linux下安装软件的方式yum安装或者直接下载源码编译安装都行。yum和源码编译安装的区别?1.路径区别-yum安装的软件是他自定义的,源码安装的软件./configure --preifx=软件安装的绝对路径2.yum仓库的软件,版本可能比较低,而源码编译安装,版本可控3.编译安装的软件,支持第三方功能扩展./configure 这里可以加上很多参数,定制功能修改yum的镜像源并下载安装Nginx1.修改yum镜像源原来的镜像源的配置文件在etc/yum.repos.d/下_centos python 网站

C# IEEE754浮点数的转换方法_c# ,ieee-754标准浮点数16进制转10-程序员宅基地

文章浏览阅读7.4k次。ref: https://blog.csdn.net/jvouge/article/details/589417416进制转换为10进制的公式如下: SGL = (-1)^SIGN * 1.MANTISSA * 2^(EXPONENT-127)1。字节转换为浮点数int data1=0x41; int data2=0x45; int data3=0x70..._c# ,ieee-754标准浮点数16进制转10

libxml使用实例_libxml示例-程序员宅基地

文章浏览阅读4.3k次。libxml21 声明指针: 文档指针(xmlDocPtr),结点指针(xmlNodePtr);2 得到文档doc: xmlReadFile3 得到根结点root_node: xmlDocGetRootElement4 结点操作:1)获得到结点值: xmlNodeGetContent(对应于xmlFree)2)遍历:

MFC添加Qt库_mfc引入qt的库-程序员宅基地

文章浏览阅读4.1k次。Qt库中也有一些封装较好的类,所以在MFC中直接用,会方便很多;一般配置VC环境两个方法,1是当前工程配置,2是全局VC环境配置,可以参考网上文章;这里我讲一下当MFC前工程配置Qt:1:建立一个MFC工程;2:配置Qt头文件路径;3:配置lib库文件路径;4:添加相关的库;注:相关配置,可以直接参考复制 在VS中添加的Qt项目配置;_mfc引入qt的库

mysql全文搜索索引的字段提高搜索效率-程序员宅基地

文章浏览阅读1k次。一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候。 开发者只需要简单地标记出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索,因为MySQL使用自然语言来智能地对结果评级,以去掉不相关的

计算机专业的可以做资料员工作吗,建筑资料员好不好做?-程序员宅基地

文章浏览阅读580次。原标题:建筑资料员好不好做?无论从事何种职业或者工作,都有着从不懂到懂,从新手变成一位有经验的专业人士这样一个过程,所以不懂并不可怕,只要你坚持,只要认真的学习,新手就只是暂时的代名词而已。首先来了解一下自己的行业概念: 建筑工程资料员的工作是一项集工程建设管理、档案管理知识为一体的复合专业工作,必须具备一定的建筑专业知识、档案专业知识及操作计算机建筑应用软件的能力。 随着建设的不断升温,建筑资料..._资料员是计算机专业类别里的吗

随便推点

IDEA使用手册之 web项目DeBug调试_ideal调试本地web项目-程序员宅基地

文章浏览阅读7k次,点赞2次,收藏18次。**IDEA使用手册之 web项目DeBug调试**1.点击debug调试按钮,开始运行web工程2.启动成功3.设置断点4.通过浏览器发送请求5.请求发送之后会自动跳到断点处,并且在断点之前会有数据结果显示1.点击debug调试按钮,开始运行web工程2.启动成功3.设置断点代码左边空白处用鼠标点击添加断点, 再次点击会取消断点4.通过浏览器发送请求5.请求..._ideal调试本地web项目

ESLint 报 ‘require‘ is not defined no-undef_require' is not defined.eslintno-undef-程序员宅基地

文章浏览阅读7.6k次,点赞7次,收藏7次。项目中在 .vue 文件中直接使用 node.js 语法可能会报 ESLint 报错需要修改下 eslint 的配置,一般 eslint 配置文件为 .eslintrc.js// .eslintrc.jsmodule.exports = { env: { node: true // 只需将该项设置为 true 即可 }, //此处省略其他配置};..._require' is not defined.eslintno-undef

Java精选笔记_多线程(创建、生命周期及状态转换、调度、同步、通信)_新线程启动后系统会自动调用-程序员宅基地

文章浏览阅读402次。线程概述在应用程序中,不同的程序块是可以同时运行的,这种多个程序块同时运行的现象被称作并发执行。多线程可以使程序在同一时间内完成很多操作。多线程就是指一个应用程序中有多条并发执行的线索,每条线索都被称作一个线程进程Process在一个操作系统中,每个独立执行的程序都可称之为一个进程,也就是“正在运行的程序”。线程Thread一个程序至少有一个进程,一个进程至少有_新线程启动后系统会自动调用

复现 CVE-2020-1957( Apache Shiro 认证绕过漏洞)_cve-2020-1957复现-程序员宅基地

文章浏览阅读2.3k次。一、漏洞描述Apache Shiro 1.5.2之前版本中存在安全漏洞。攻击者可借助特制的请求利用该漏洞绕过身份验证。Shiro框架通过拦截器功能来对用户访问权限进行控制,如anon, authc等拦截器。anon为匿名拦截器,不需要登录即可访问;authc为登录拦截器,需要登录才可以访问。Shiro的URL路径表达式为Ant格式,路径通配符*表示匹配零个或多个字符串,比如:/*可以匹配/hello,但是匹配不到/hello/,因为*通配符无法匹配路径。假设/hello接口设置了authc拦截器,访_cve-2020-1957复现

CCF CSP 201609-2 火车购票_csp 铁路购票 c语言 数据结构-程序员宅基地

文章浏览阅读479次。问题描述试题编号:201609-2试题名称:火车购票时间限制:1.0s内存限制:256.0MB问题描述:问题描述  请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配。  假设一节车厢有20排、每一排5个座位。为方便起见,我们用1到100来给所有的_csp 铁路购票 c语言 数据结构

安装编译源码php5.6.11_php/5.6.11源码-程序员宅基地

文章浏览阅读646次。安装php是建立在安装apache和mysql之上的,可以参考我安装mysql和apache源码安装的博客。cd php-5.6.11./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-config-file-path=/etc --with-config-file_php/5.6.11源码

推荐文章

热门文章

相关标签