罗马数字转整数

上一题是整数转罗马数字,这题是罗马数字转整数。虽然是简单题,但我感觉其实有点烦。

上一次是数字转字符,这次是字符转数字,总的来说大体思想还是差不多的。
首先整个字符串可能是这样构造的:

然后你根据每个字符依次处理(这里从右往左)I类型,V类型,X类型。每种类型只需要考虑一下特殊情况的数值加上去就ok。记得移动字符串光标位置就可。

实现代码为:

public static int romanToInt(String s) {int numvalue []={1,5,10,50,100,500,1000};char charvalue []= {'I', 'V', 'X', 'L','C','D','M'};StringBuilder sBuilder=new StringBuilder();int index=s.length()-1;int value=0;for(int i=0;i<charvalue.length;i++)//i代表字符{if(index<0)break;if(s.charAt(index)==charvalue[i]){if(i%2==0&&i-2>=0&&index>=1&&s.charAt(index-1)==charvalue[i-2]){value+=numvalue[i];value-=numvalue[i-2];index-=2;}else if(i%2==1&&i-1>=0&&index>=1&&s.charAt(index-1)==charvalue[i-1]){value+=numvalue[i];value-=numvalue[i-1];index-=2;}while(index>=0&&s.charAt(index)==charvalue[i])//正常数字{value+=numvalue[i];index--;}}   }return value;}

最长公共前缀

这题的话思路很简单,但是需要一定优化,尽量减少判断,所以这里使用最短的那个串作为预备遍历的串(公共前缀极限这么大)。然后只需要每次遍历比较找到第一个不同的即停止。否则一直进行。

ac代码为:

public String longestCommonPrefix(String[] strs) {StringBuilder sBuilder=new StringBuilder();if(strs==null||strs.length==0)return "";String team=strs[0];for(int i=0;i<strs.length;i++){if(strs[i].length()<team.length()){team=strs[i];}}int i=0;for(;i<team.length();i++){for(int j=0;j<strs.length;j++){//System.out.println(strs[j].charAt(i)+" "+team.charAt(i));if(strs[j].charAt(i)!=team.charAt(i)){return sBuilder.toString();}}sBuilder.append(team.charAt(i));}return sBuilder.toString();     }

不知道0ms是什么神仙啊

结语

原创不易,bigsai请你帮两件事帮忙一下:

  1. star支持一下, 您的肯定是我在平台创作的源源动力。

  2. 微信搜索「bigsai」,关注我的公众号,不仅免费送你电子书,我还会第一时间在公众号分享知识技术。加我还可拉你进力扣打卡群一起打卡LeetCode。

记得关注、咱们下次再见!

LeetCode 13罗马数字转整数14最长公共前缀相关推荐

  1. c语言罗马数字换成整数,leetcode 13 罗马数字转整数 C语言

    leetcode 13 罗马数字转整数 原题 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 ...

  2. Python LeetCode(13.罗马数字转整数)

    Python LeetCode(13.罗马数字转整数) 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M ...

  3. Leetcode 13.罗马数字转整数

    Leetcode 13.罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 100 ...

  4. LeetCode 14.最长公共前缀(字符串)

    上一篇博客:Leetcode 13.罗马数字转整数(字符串)  写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode的 ...

  5. 52 - 算法- leetcode 14 最长公共前缀

    // leetcode 14 最长公共前缀 str.sub(index1,index2)这个函数不清楚 // for(vector中的类class : vector) for 循环中的index 和 ...

  6. [模拟] leetcode 14 最长公共前缀

    [模拟] leetcode 14 最长公共前缀 1.题目 题目链接 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例1: 输入: [& ...

  7. Leetcode 14.最长公共前缀(Longest Common Prefix)

    Leetcode 14.最长公共前缀 1 题目描述(Leetcode题目链接)   编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 输入: ...

  8. [leetcode] 14. 最长公共前缀

    14. 最长公共前缀 超级简单... class Solution { public:string longestCommonPrefix(vector<string> &strs ...

  9. LeetCode 14. 最长公共前缀 (单指针水平扫描)

    14. 最长公共前缀 题意: 找出一个字符串数组中所有字符串的最长公共前缀,如果不存在返回"" 思路: 假设数组第一个元素就是ans 从下标1开始遍历数组 用一个指针水平扫描ans ...

最新文章

  1. ini配置文件的读取
  2. 《Ext详解与实践》节选:文件上传
  3. ASP.NET 错误
  4. java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf
  5. 混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践
  6. python布局管理数据_利用python创建窗口-布局管理器(五)
  7. Ubuntu 远程使用ssh 开启服务器终端的方法
  8. 【情感识别】基于matlab GUI改进的KNN算法语音情感分类识别【含Matlab源码 354期】
  9. PDF417二维条码生成器 C++
  10. C语言 Mkl 矩阵乘法,MKL库矩阵乘法
  11. wxid转扫一扫协议加好友
  12. 因创业的辞职报告怎么写[范文7篇]
  13. laravel 分页样式
  14. 2020_ICML_Neuro-Symbolic Visual Reasoning: Disentangling “Visual” from “Reasoning”
  15. 数字化经济时代的企业信息化管理转型——数据化 信息化 数字化 智慧管理的概念及它们之间的关系
  16. MC9S12XEP100的SPI模块(S12SPIV5)
  17. R绘图 第十篇:绘制散点图(高级)
  18. 2013年全国各大著名的IT公司薪资待遇大揭密
  19. tshark命令小结
  20. 阿里云域名备案和域名解析流程详解

热门文章

  1. 智能合约重构社会契约 (5)比特犬模型实现智能合约
  2. (chap9 基于HTTP的功能追加协议) Web 服务器管理文件的 WebDAV
  3. [密码学] RSA利用解密指数分解n
  4. 135. 分发糖果(贪心算法)
  5. linux kernel使用技巧
  6. SEO -- 搜索引擎优化
  7. 用数组存储二进制数据
  8. Windows保护模式学习笔记(一)—— 段寄存器GDT表
  9. 1、CSS 框模型概述(盒模型)
  10. 设置超链接文字的样式