国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

Roman to Integer

2019-11-08 18:45:55
字體:
供稿:網(wǎng)友

今天做的習(xí)題是Roman to Integer的LeetCode,比較簡單,重點(diǎn)是轉(zhuǎn)換規(guī)則要用好,其他就沒有什么了。但做完題之后還是不太明白為什么要用這個(gè)算法。

思路為:1:將字符串轉(zhuǎn)換為字符數(shù)組

2:對(duì)字符數(shù)組的每一個(gè)符號(hào)進(jìn)行判斷如果大于前一個(gè)符號(hào)則加上如果小于則加上后一個(gè)符號(hào)并且減去兩倍的此符號(hào)

具體代碼如下:

public class Solution {	 public int romanToInt(String s) {		 		 int graph[] = new int[400];  		 graph['I'] = 1;  	     graph['V']=5;  	     graph['X']=10;  	     graph['L']=50;  	     graph['C']=100;  	     graph['D']=500;  	     graph['M']=1000;   	     char[] romanNum=s.toCharArray();	     int sum=graph[romanNum[0]];	     for(int i=0;i<romanNum.length-1;i++){	    	 if(graph[romanNum[i]]>=graph[romanNum[i+1]])	    		 sum+=graph[romanNum[i+1]];	    	 else	    		 sum+=graph[romanNum[i+1]]-2*graph[romanNum[i]];	     }		 return sum;	    }

學(xué)到的新的做法就是將字母變成數(shù)組的序號(hào)進(jìn)行賦值,每個(gè)字母代表不同的值。然后將羅馬數(shù)字拆分成一個(gè)個(gè)字符找到每個(gè)字符對(duì)應(yīng)的數(shù)字,再根據(jù)相應(yīng)的法則進(jìn)行加減,最終得出正確結(jié)果,這個(gè)算法的運(yùn)行速度還算不錯(cuò)。

看了一下其他的算法,有的是不對(duì)的,有的視根據(jù)羅馬數(shù)字的構(gòu)造法則分出了很多特殊情況。

有一種很簡單也很用以理解的方法就是:

	 public int romanToInt(String s) {		    int nums[]=new int[s.length()];		    for(int i=0;i<s.length();i++){		        switch (s.charAt(i)){		            case 'M':		                nums[i]=1000;		                break;		            case 'D':		                nums[i]=500;		                break;		            case 'C':		                nums[i]=100;		                break;		            case 'L':		                nums[i]=50;		                break;		            case 'X' :		                nums[i]=10;		                break;		            case 'V':		                nums[i]=5;		                break;		            case 'I':		                nums[i]=1;		                break;		        }		    }		    int sum=0;		    for(int i=0;i<nums.length-1;i++){		        if(nums[i]<nums[i+1])		            sum-=nums[i];		        else		            sum+=nums[i];		    }		    return sum+nums[nums.length-1];		}思路就是先創(chuàng)建與字符串長度相同的整數(shù)數(shù)組,根據(jù)相應(yīng)位置的字母設(shè)置相應(yīng)位置的整數(shù)值。比較對(duì)應(yīng)位置的整數(shù)值后其后一個(gè)位置的整數(shù)值,如果是大于等于的關(guān)系就加上這個(gè)位置的數(shù),否則減去這個(gè)位置的數(shù)字,最后加上最后一位的數(shù)字。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 伊川县| 乐清市| 江北区| 札达县| 长春市| 呼伦贝尔市| 仁布县| 陇南市| 龙游县| 北安市| 东台市| 莲花县| 郧西县| 龙泉市| 南开区| 亚东县| 通州市| 霍邱县| 河西区| 琼海市| 宁河县| 新泰市| 大洼县| 武宣县| 前郭尔| 宜良县| 西宁市| 怀来县| 沧州市| 黑山县| 黄骅市| 社旗县| 芦山县| 北流市| 东莞市| 高淳县| 博罗县| 通海县| 阿图什市| 大庆市| 潮州市|