13.Roman to Integer(find()函數(shù))

Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.


1.算法
    int romanToInt(string s) {
        string t="IVXLCDM";
        vector<int> q={1,5,10,50,100,500,1000};
        int n=0;
        for(int i=0;i<s.length()-1;i++){
            if(t.find(s[i])>=t.find(s[i+1])){
                n = n+q[t.find(s[i])];
            }
            else n = n-q[t.find(s[i])];
        }
        n=n+q[t.find(s[s.length()-1])];
        return n;
    }
2.思路

根據羅馬數(shù)字的規(guī)律

重復數(shù)次:1個羅馬數(shù)字重復幾次,就表示這個數(shù)的幾倍.
右加左減:在一個較大的羅馬數(shù)字的右邊記上一個較小的羅馬數(shù)字,表示大數(shù)字加小數(shù)字.在一個較大的數(shù)字的左邊記上1個較小的羅馬數(shù)字,表示大數(shù)字減小數(shù)字.但是,左減不能跨越一個位數(shù).比如,99不可以用IC表示,而是用XCIX表示.此外,左減數(shù)字不能超過1位,比如8寫成VIII,而非IIX.同理,右加數(shù)字不能超過3位,比如14寫成XIV,而非XIIII.

遍歷字母串,如果某個元素要比它的下一位元素小,則減去相應值,反之加上對應值。
至于對應值的計算,可以直接放在向量中?。ㄈ缟厦娴拇a所做的)。也可以直接計算,規(guī)律是

3.find()相關函數(shù)
  • find() 查找第一次出現(xiàn)的目標字符,可以指定查找位置;如果查找成功,則輸出查找到的第一個位置,否則返回-1;
  • find_first_of() 查找子串中的某個字符最先出現(xiàn)的位置。find_first_of()不是全匹配,而find()是全匹配;
  • find_last_of() 與find_first_of()功能差不多,只不過find_first_of()是從字符串的前面往后面搜索,而find_last_of()是從字符串的后面往前面搜索;
  • find_first_not_of() 查找第一個不匹配
  • find_if() 查找是否存在 bool
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 一、字符串操作 strcpy(p, p1) 復制字符串 strncpy(p, p1, n) 復制指定長度字符串 s...
    JaiUnChat閱讀 1,752評論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,600評論 19 139
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,925評論 0 33
  • 本文轉自:http://www.cnblogs.com/lidabo/p/5225868.html 1)字符串操作...
    XiaohuiLI閱讀 9,688評論 0 0
  • 我是反六一對一,是一名財務人員。都說財務人員對數(shù)字是非常敏感的,然而,我只能很遺憾的說,我沒有,因為我的興趣在家里...
    紫煙_3cfc閱讀 171評論 0 0

友情鏈接更多精彩內容