LeetCode 13罗马数字转整数14最长公共前缀
罗马数字转整数
上一题是整数转罗马数字,这题是罗马数字转整数。虽然是简单题,但我感觉其实有点烦。
上一次是数字转字符,这次是字符转数字,总的来说大体思想还是差不多的。
首先整个字符串可能是这样构造的:
然后你根据每个字符依次处理(这里从右往左)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请你帮两件事帮忙一下:
star支持一下, 您的肯定是我在平台创作的源源动力。
微信搜索「bigsai」,关注我的公众号,不仅免费送你电子书,我还会第一时间在公众号分享知识技术。加我还可拉你进力扣打卡群一起打卡LeetCode。
记得关注、咱们下次再见!
LeetCode 13罗马数字转整数14最长公共前缀相关推荐
- 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 ...
- 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 ...
- 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 ...
- LeetCode 14.最长公共前缀(字符串)
上一篇博客:Leetcode 13.罗马数字转整数(字符串) 写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode的 ...
- 52 - 算法- leetcode 14 最长公共前缀
// leetcode 14 最长公共前缀 str.sub(index1,index2)这个函数不清楚 // for(vector中的类class : vector) for 循环中的index 和 ...
- [模拟] leetcode 14 最长公共前缀
[模拟] leetcode 14 最长公共前缀 1.题目 题目链接 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例1: 输入: [& ...
- Leetcode 14.最长公共前缀(Longest Common Prefix)
Leetcode 14.最长公共前缀 1 题目描述(Leetcode题目链接) 编写一个函数来查找字符串数组中的最长公共前缀.如果不存在公共前缀,返回空字符串 "". 输入: ...
- [leetcode] 14. 最长公共前缀
14. 最长公共前缀 超级简单... class Solution { public:string longestCommonPrefix(vector<string> &strs ...
- LeetCode 14. 最长公共前缀 (单指针水平扫描)
14. 最长公共前缀 题意: 找出一个字符串数组中所有字符串的最长公共前缀,如果不存在返回"" 思路: 假设数组第一个元素就是ans 从下标1开始遍历数组 用一个指针水平扫描ans ...
最新文章
- ini配置文件的读取
- 《Ext详解与实践》节选:文件上传
- ASP.NET 错误
- java 插桩 工具_一个基于Eclipse的通用Java程序插桩工具.pdf
- 混合云模式下 MaxCompute + Hadoop 混搭大数据架构实践
- python布局管理数据_利用python创建窗口-布局管理器(五)
- Ubuntu 远程使用ssh 开启服务器终端的方法
- 【情感识别】基于matlab GUI改进的KNN算法语音情感分类识别【含Matlab源码 354期】
- PDF417二维条码生成器 C++
- C语言 Mkl 矩阵乘法,MKL库矩阵乘法
- wxid转扫一扫协议加好友
- 因创业的辞职报告怎么写[范文7篇]
- laravel 分页样式
- 2020_ICML_Neuro-Symbolic Visual Reasoning: Disentangling “Visual” from “Reasoning”
- 数字化经济时代的企业信息化管理转型——数据化 信息化 数字化 智慧管理的概念及它们之间的关系
- MC9S12XEP100的SPI模块(S12SPIV5)
- R绘图 第十篇:绘制散点图(高级)
- 2013年全国各大著名的IT公司薪资待遇大揭密
- tshark命令小结
- 阿里云域名备案和域名解析流程详解