网站备案幕布照片ps,网站网站建设考虑要素,室内设计师网址导航,网站备案帐号找回罗马数字转整数
题目描述
罗马数字包含以下七种字符: I#xff0c; V#xff0c; X#xff0c; L#xff0c;C#xff0c;D 和 M。 例如#xff0c; 罗马数字 2 写做 II #xff0c;即为两个并列的 1。12 写做 XII #xff0c;即为 X II 。 27 写做 XXVII, 即为 XX…罗马数字转整数
题目描述
罗马数字包含以下七种字符: I V X LCD 和 M。 例如 罗马数字 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 到 3999 的范围内。
解题思路
罗马数字只有特定的几个字符来表示那么除了这些特定的字符其余数字该怎么表示 比方说III其实就是3个I也就是三个1相加那么4–IV该怎么表示其实就是V减去I所以只要前面的罗马数字所对应的整数小于后面罗马数字所对应整数就要减去(用一个变量来保存)而如果不小于就要加上(用另外一个变量来保存)最后的结果就是两个变量相加
代码实现 mapchar, int mp;mp[I] 1;mp[V] 5;mp[X] 10;mp[L] 50;mp[C] 100;mp[D] 500;mp[M] 1000;int cur 0; //要计算减去的变量int pos 0; //要及计算加上的变量for(int i 0;is.size()-1;i){if(mp[s[i]]mp[s[i1]])cur-mp[s[i]];elseposmp[s[i]];} posmp[s.back()];return poscur;最长的公共前缀
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀返回空字符串 “”。
解题思路
本体给的参数是vectorstring v因为是公共前缀所以以第一个字符串为标准遍历第一个字符串如果为空直接返回每扫描一个字符就与后面的每个字符串的相同位置做比较如果相同加到返回结果了一但不同直接返回。
代码实现
class Solution {
public:string longestCommonPrefix(vectorstring strs) {string res ;if(strs.empty())return res;char ch ;for(int i 0 ;;i){if(istrs[0].size())ch strs[0].at(i);elsereturn res;for(auto e:strs){ if(i e.size() ch e[i]) //什么也不干因为通过筛选;else//没通过直接返回return res;}//加上每回通过的res ch;}return res;}
};