1. 给定一个罗马数字,将其转换成整数。
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1 。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如 4 不写做 IIII,而是 IV。数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 。同样地,数字 9 表示为 IX。这个特殊的规则只适用于以下六种情况:
I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
输入: s = "III" 输出: 3
输入: s = "IV" 输出: 4
输入: s = "IX" 输出: 9
var romanToInt = function(s) {
let m=new Map([['I',1],['V',5],['X',10],['L',50],['C',100],['D',500],['M',1000]]);
let res=0;
for(let i=0;i
2. 两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。数组中同一个元素在答案里不能重复出现。
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
var twoSum = function(nums, target) {
if (nums.length > 0) {
let o = nums[0];
let t = nums[0];
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
o = i;
t = j;
}
}
}
return [o, t]
} else {
return [-1, -1]
}
}
3.给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。
这个题官方解答用了“滑动窗口”,后面要再仔细看一下。
输入: s = "abcabcbb"
输出: 3
解释: 因为无重复字符的最长子串是 "abc",所以其长度为 3。
var lengthOfLongestSubstring = function (s) {
if (s.length === 0 || s.length === 1) {
return s.length;
} else {
let s1 = '';
let a = [];
for (let i = 0; i < s.length; i++) {
if (s1.includes(s.charAt(i)) === true) {
s1 += s.charAt(i)
// console.log(a, a.length);
// console.log(s1.length, i);
i = i - s1.length + 1
// console.log(i);
s1 = '';
// console.log(i);
} else {
s1 += s.charAt(i);
}
a.push(s1.length)
}
console.log(a);
let m = a[0];
for (let i = 0; i < a.length; i++) {
if (m < a[i]) {
m = a[i]
}
}
return m;
}
};
每一次要将存储最长子串的变量s1置空的时候,将该子串的长度存入数组a中、同时要注意将i退回(i-s1.length+1),最后找出数组a中最大元素,即最长子串的长度。
以下是其他人的解答,感觉更简单易懂:
var lengthOfLongestSubstring = function(str) {
if (str.length <= 1) {return str.length}
let left = 0
let right = 1
let max = 0
let temp
while(right -1) {
left++
continue
} else {
right++
}
if (right - left > max) { max = right - left }
}
return max
};
// 作者:Romantic Ardinghellix4s
// 链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/
// 来源:力扣(LeetCode)