力扣刷题(5)

整数转罗马数字

整数转罗马数字-力扣

思路:

  1. 把各十百千位可能出现的情况都列出来,写成一个二维数组
  2. 找出该数的各十百千位,与数组中的罗马元素对应
cpp 复制代码
const char* ch[4][10]={{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},//个位
                    {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},//十位
                    {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},//百位
                    {"", "M", "MM", "MMM"}};//千位
char* intToRoman(int num) {
    char* str=(char*)malloc(sizeof(char)*16);
    strcpy(str,ch[3][num/1000]);
    strcat(str,ch[2][num/100%10]);
    strcat(str,ch[1][num/10%10]);
    strcat(str,ch[0][num%10]);
    return str;
}

罗马数字转整数

罗马数字转整数-力扣

思路:

  1. 将罗马数字出现的可能写成一个函数,方便后续的判断
  2. 从后往前遍历数组,当这个罗马字母转化成数字后的大小比前一个小,则说明该数字需要减掉,才能符合罗马数字的减法形式
cpp 复制代码
class Solution {
public:
    int change(char ch)
    {
        if(ch == 'I')
            return 1;
        else if(ch == 'V')
            return 5;
        else if(ch == 'X')
            return 10;
        else if(ch == 'L')
            return 50;
        else if(ch == 'C')
            return 100;
        else if(ch == 'D')
            return 500;
        else if(ch == 'M')
            return 1000;
        else
            return 0;
    }

    int romanToInt(string s) {
    int len=s.size()-1;
    int prev=0;
    int sum=0;
    for(len=s.size()-1;len>=0;len--)
    {
        int tmp=change(s[len]);
        prev=prev > tmp ? -tmp:tmp;
        sum+=prev;
    }
    return sum;
    }
};

最长的公共前缀

最长的公共前缀-力扣


思路来源:灵茶山艾府

  1. 从左到右遍历 strs 的每一列。
  2. 设当前遍历到第 j 列,从上到下遍历这一列的字母。
  3. 设当前遍历到第 i 行,即 strs[i][j]。如果 j 等于 strs[i] 的长度,或者 strs[i][j] != strs[i][0],说明这一列的字母缺失或者不全一样,那么最长公共前缀的长度等于 j,返回 strs[0] 的长为 j 的前缀。
  4. 如果没有中途返回,说明所有字符串都有一个等于 strs[0] 的前缀,那么最长公共前缀就是 strs[0]。
c 复制代码
char* longestCommonPrefix(char** strs, int strsSize) {
    char* str=strs[0];
    for(int j=0;str[j];j++)
    {
        for(int i=0;i<strsSize;i++)
        {
            if(strs[i][j] != str[j])
            {
                str[j]='\0';
                return str;
            }
        }
    }
    return str;
}
相关推荐
Swift社区38 分钟前
LeetCode - #139 单词拆分
算法·leetcode·职场和发展
Dong雨2 小时前
力扣hot100-->栈/单调栈
算法·leetcode·职场和发展
trueEve4 小时前
SQL,力扣题目1369,获取最近第二次的活动
算法·leetcode·职场和发展
九圣残炎5 小时前
【从零开始的LeetCode-算法】3354. 使数组元素等于零
java·算法·leetcode
程序猿小柒6 小时前
leetcode hot100【LeetCode 4.寻找两个正序数组的中位数】java实现
java·算法·leetcode
_OLi_7 小时前
力扣 LeetCode 106. 从中序与后序遍历序列构造二叉树(Day9:二叉树)
数据结构·算法·leetcode
我明天再来学Web渗透7 小时前
【SQL50】day 2
开发语言·数据结构·leetcode·面试
小叶lr8 小时前
idea 配置 leetcode插件 代码模版
java·leetcode·intellij-idea
理论最高的吻12 小时前
98. 验证二叉搜索树【 力扣(LeetCode) 】
数据结构·c++·算法·leetcode·职场和发展·二叉树·c
沈小农学编程12 小时前
【LeetCode面试150】——202快乐数
c++·python·算法·leetcode·面试·职场和发展