zoukankan      html  css  js  c++  java
  • 计蒜课_罗马数字转换为整数

    思路总结:这道题重点在于对罗马数字规则的把握,熟悉了罗马数字的规则以后,实现主要思路是

    1、输入的罗马数字字符串str;

    2、一个字符数组C,在代码中给出c;

    在给定的字符数组C中,不断地判断C的当前元素是否为str的前缀,即分别确定str所代表数字的千位,百位,十位,个位:

    实现代码如下:

     1 int getLength(const char*str) {//获取字符串的长度;
     2     int length_of_str;
     3     for (length_of_str = 0;str[length_of_str] != '';length_of_str++);
     4     return length_of_str;
     5 }
     6 bool is_prefix(const char*str1,const char*str2) {//判断str1是否为str2的前缀;
     7     int length_of_str1 = getLength(str1);
     8     int length_of_str2 = getLength(str2);
     9     if (length_of_str1 > length_of_str2)
    10         return false;
    11     for (int i = 0;i < length_of_str1;i++) {
    12         if (str1[i] != str2[i]) {
    13             return false;
    14         }
    15     }
    16     return true;
    17 }
    18 int RomanToInt(const char*str) {//主要实现函数;
    19     char*c[4][10] = {
    20         {"","I","II","III","IV","V","VI","VII","VIII","IX"},//1~9;
    21         {"","X","XX","XXX","XL","L","LX","LXX","LXXX","XC"},//10~90;
    22         {"","C","CC","CCC","CD","D","DC","DCC","DCCC","CM"},//100~900;
    23         {"","M","MM","MMM"},//1000~3000;
    24     };
    25     int result = 0;//存放结果;
    26     int length_of_str = getLength(str);//获取待转换为罗马数字的字符串的长度;
    27     int currentrow=3;//初始位置的列数;
    28     int currentcolumn=3;//初始位置的行数;
    29     int current_length;
    30     while((currentrow>=0)&&(str[0] != '')){
    31         current_length = getLength(c[currentrow][currentcolumn]);
    32         if (is_prefix(c[currentrow][currentcolumn],str)) {
    33             result = result*10+currentcolumn;//更新result;
    34             currentrow--;
    35             currentcolumn = 9;
    36             str += current_length;//若对字符串的前缀判断成功,则将字符串str的指针右移相应长度;
    37         }
    38         else {
    39             if (--currentcolumn == 0) {
    40                 currentrow--;
    41                 currentcolumn = 9;
    42             }
    43         }
    44 
    45     }
    46     return result;
    47 }
    如有不当,欢迎指正 :)
  • 相关阅读:
    LoadScript
    Mac终端Terminal调用Sublime Text
    jquery ajax 提交 FormData
    ps切图设置
    bootstrap-select搜索框输入中文
    Homebrew安装
    清空file input框
    javascript 随机数区间
    Canvas与Image互转
    html空格小结
  • 原文地址:https://www.cnblogs.com/lif323/p/6797793.html
Copyright © 2011-2022 走看看