关于算法:leetCode第13题和第14题罗马数字转整数最长公共前缀

1.leetCode第13题
需要:https://leetcode-cn.com/probl…

重点提醒:通常状况下,罗马数字中小的数字在大的数字的左边。但也存在特例,例如 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。

 function print(s) {
    let map = {I: 1,V: 5,X: 10,L: 50,C: 100,D: 500,M: 1000};
    let total = 0;
    for (let i = 0; i < s.length; i++) {
       /*   计算total 如果以后的数字小于其前面的一位那么就意味着合乎下面的六种状况 那么计算逻辑应该是让总数减去以后位 而后再加上
       前面一位就是咱们想要的后果 比方total=0;  IV=4  0-1+5=4
         */
      total = map[s[i + 1]] && map[s[i]] < map[s[i + 1]]? total - map[s[i]]: total + map[s[i]];
    }
    return total;
  }

2.leetCode第14题
需要:https://leetcode-cn.com/probl…

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。

示例 1:
输出:strs = ["flower","flow","flight"]
输入:"fl"

示例 2:
输出:strs = ["dog","racecar","car"]
输入:""
解释:输出不存在公共前缀。
function print(strs) {
    if (strs == null || strs.length == 0) return "";
    for (let i = 0; i < strs[0].length; i++) {
      let char = strs[0][i];
      for (let j = 1; j < strs.length; j++) {
        if (strs[j][i] !== char) return strs[0].substring(0, i);
      }
    }
    return strs[0];
  }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理