13.Roman to Integer
/**
* @param {string} s
* @return {number}
*/
var romanToInt = function(s) {
var map={};
map["I"]=1;map["V"]=5;map["X"]=10;map["L"]=50;map["C"]=100;map["D"]=500;map["M"]=1000;
var res=map[s[s.length-1]];
for(i=s.length-1;i>0;i--)
{
if(map[s[i-1]]>=map[s[i]])
{
res=res+map[s[i-1]];
}
else
res=res-map[s[i-1]];
}
return res;
};
遇到的问题:
不懂罗马数字的表示方法。
本来想从正序一点点看是否后一个比前一小,再后一个比前一大。很复杂。
解决方案:
学习了一下罗马数字表示方法。
直接倒序看,前一个数比当前数小则相减,大则相加。
map的用法。map[key]可以查到value。
14 . Longest Common Prefix
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
var len = strs.length;
if(len===0){
return("");
}
strs.sort();
var str1 = strs[0];
var str2 = strs[len-1];
var min_len = Math.min(str1.length,str2.length);
for(i = 0;i < min_len;i++){
if(str1.charAt(i) !== str2.charAt(i))
break;
}
var prefix = str1.substring(0,i);
return prefix;
};