一.字符串的认识

字符串是由零个或多个字符组成的有限序列。一般记为 s =
a_1a_2…a_ns=a1a2…a**n。它是编程语言中表示文本的数据类型。
字符串与数组有很多相似之处,比如使用 名称[下标] 来得到一个字
符。然而,字符串有其鲜明的特点,即结构相对简单,但规模可能是庞
大的。
以生物中的 DNA 序列为例,假设一个 DNA 序列为
“GCCGTAATATCG…”,在人体中,该序列的长度可能会达到 n\times
10^8n×108。
然而,构成序列的基本碱基种类只有 “A” , “T” , “G” , “C” 4 种。


在编程语言中,字符串往往由特定字符集内有限的字符组合而成,根据
其特点,对字符串的 操作 可以归结为以下几类:
1. 字符串的比较、连接操作(不同编程语言实现方式有所不同);“ABC” “BCA” (遍历每一个字符串的单个字母一一比较 ==) 链接操作: join “abcd”.join(‘-’) ==> a-b-c-d
2. 涉及子串的操作,比如前缀,后缀等; + 拼接
3. 字符串间的匹配操作,如 KMP 算法、BM 算法等

二. 罗马转整数题目

罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X
+ II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,
例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于
大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊
的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。

三. 例子分析

示例 1:
输入: s = “III”
输出: 3

代码实现

示例 2:
输入: s = “IV”
输出: 4

代码实现

四.解题思路

首先通过观察"IV",“VI”,“IX”,"XI"可以清楚的看到当罗马字符串左边的字符对应整数小于罗马字符串右边的字符对应整数时,我们的罗马转成整数是用右边的罗马整数减去左边的罗马整数,当罗马字符串左边的字符对应整数大于右边罗马字符的对应整数则,罗马字符串转换成的整数就等于我们左边字符串对应整数加上右边的罗马对应整数,

为什么我们这里遍历时range里面遍历的是字符串长度减一而不是直接遍历整个字符串???

因为在我们遍历字符串后我们需要对字符串的第一个罗马整数和第二个罗马整数做一个判断,如果我们直接遍历整个字符串,就会导致我们索引溢出的情况,但这样就是遍历不到我们的最后一项,我们只需要,在循环完成之后,通过索引获取到罗马字符串的最后一项的整数,加到我们定义的变量上面去就好了.

五.最终代码

def romanToInt(s):Int = 0  # 转数字之后的值rules = {"I": 1, "V": 5, "X": 10, "L": 50, "C": 100, "D": 500, "M": 1000}  # 罗马转数字的规则for index in range(len(s) - 1):if rules[s[index]] < rules[s[index + 1]]:Int -= rules[s[index]]else:Int += rules[s[index]]return rules[s[-1]] + Intif __name__ == '__main__':roman_str = input('请输入你要转换的罗马字符串:->')result = romanToInt(roman_str)print(result)

python算法_02字符串(罗马类型的转换整数)相关推荐

  1. python 如何将字符串列表合并后转换成字符串? ''.join(List(str))函数

    参考文章:python 怎么将列表转换成字符串 temp_list = ['h', 'e', 'l', 'l', 'o'] result = ''.join(temp_list) print(resu ...

  2. Python 字符数据类型和数字类型的转换

    1.数字转换成字符类型 两种方法: 使用str()函数 >>>str(4) + '10' '410' >>>str(10) '10' >>>str ...

  3. Python算法--杂乱字符串排序

    题目 编写一个程序,将输入字符串中的字符按如下规则排序. 规则 1 :英文字母从 A 到 Z 排列,不区分大小写. 如,输入: Type 输出: epTy 规则 2 :同一个英文字母的大小写同时存在时 ...

  4. python输入的字符串转换为对应的数字类型_Python合集之Python运算符(四)

    在上一节的合集中,我们了解了Python运算符中的位运算符的相关知识,本节我们将进一步了解一下Python运算符中运算符的优先级级基础的输入输出语法的相关知识. 1. 运算符优先级 Python运算符 ...

  5. Python数据类型之字符串类型

    Python字符串类型 单行字符串 多行字符串 字符串是数组 裁切字符串 正索引 负索引 字符串方法 获取字符串长度的len()方法 删除开头和结尾空白字符的strip()方法 只删除开头的前导符的l ...

  6. Python 获取(字典)字符串时间区间并转换类型,判断该时间段属否在时间范围

    源码实例 : 获取(字典)字符串时间区间并转换类型 import datetime"ssh": {"username": "johnny", ...

  7. python string转date类型_python转换字符串为datetime类型

    下面是编程之家 jb51.cc 通过网络收集整理的代码片段. 编程之家小编现在分享给大家,也给大家做个参考. python中通过日期转换函数把字符串格式的日期转换成datetime格式的日期格式 ti ...

  8. unicode 编码转换漏洞_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

  9. python中关键字 表示空类型_Python小知识:如何在Python 3中转换数据类型

    写在前面: 在Python中,数据类型用于对一种特定类型的数据进行分类,确定可以分配给该类型的值以及可以对其执行的操作. 这里主要讲述转换数字,字符串,元组和列表,并提供示例以帮助各位熟悉不同的用例. ...

  10. python编码转换语句_好程序员Python教程之字符串编码知识小结

    好程序员Python教程之字符串编码知识小结,提及Python字符串,你会想到什么?是ASCII,还是Unicode?他们之间是如何转换的?字符串编码和字符串有什么区别?接下来好程序员Python教程 ...

最新文章

  1. grails springboot_groovy 使用spring boot
  2. Java项目代码结构
  3. Python学习笔记:线程和进程(合),分布式进程
  4. android ge模拟器,在Android模拟器上的一些小陷阱
  5. html兼容webki,评IE10对HTML5的完美支持
  6. 白鹭引擎android打包,白鹭引擎能把动画打包成小程序吗
  7. HBase之超时机制
  8. 政府机构网络安全实战
  9. coreldrawx4缩略图显示不出来_CDR不显示缩略图的3种终极解决办法!
  10. 竖流式沉淀池三角堰计算_一种辐流式沉淀池的双侧堰出水构造的制作方法
  11. kali linux 入侵教程,kali linux 入侵wordpress wpscan工具使用方法
  12. 这4个兼职平台实测靠谱,想做兼职的赶紧收藏起来看看吧
  13. 搭建属于自己的数字IC EDA环境(六):开机自动激活 Synopsys license
  14. 新版androd studio怎样连接第三方模拟器
  15. WK2124 (SPI扩展4路UART端口传输)
  16. ios wkweb设置图片_在iOS中使用WKWebView如何支持展示webp格式图片(包括本地html)?...
  17. 贵金属白银走势图分析怎么入手?
  18. 直播源码搭建,手机直播源码开发
  19. 叮咚~您有一份GitHub2020年度报告待查收
  20. 「干货」XCTF Web安全入门练习靶场全部通关教程

热门文章

  1. windows server2012 r2修改密码
  2. 大学生家乡网页设计作业模板下载 南京城市网页设计作业成品 静态HTML旅游景点网页制作下载_网页设计代码
  3. 【SAP GUI Scripting】 入门系列(1)_基本设置
  4. 虎牙财报奏响游戏直播艰难进行曲
  5. 微信登陆之生成微信二维码
  6. 407. 接雨水 II【我亦无他唯手熟尔】
  7. python 画图 实时_Python matplotlib实时画图案例
  8. 笔记———计算机网络原理(三)
  9. linkboy+ESP32创意DIY时钟
  10. CocosCreator之字体资源