国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 兰考县| 贺兰县| 兴业县| 溧阳市| 峨山| 白玉县| 南城县| 阿拉善左旗| 大竹县| 鸡泽县| 葵青区| 南安市| 隆回县| 虞城县| 洞头县| 县级市| 邹城市| 盐源县| 甘肃省| 清流县| 马尔康县| 广州市| 会理县| 万州区| 南雄市| 光泽县| 崇左市| 明溪县| 阳东县| 孝义市| 常德市| 腾冲县| 绥德县| 新丰县| 东阳市| 枝江市| 外汇| 古交市| 西平县| 竹溪县| 大城县|