leetcode中等(字符串):[3, 6, 8, 49, 179, 299, 524, 539, 609, 648]
3. 无重复字符的最长子串
var lengthOfLongestSubstring = function(s) {
let arr = [];
let max = 0
for (let i = 0; i < s.length; i++) {
let index = arr.indexOf(s[i])
if (index !== -1) {
arr.splice(0, index + 1)
}
arr.push(s[i])
max = Math.max(arr.length, max)
}
return max
};
6. Z 字形变换
var convert = function(s, numRows) {
if (numRows === 1) return s // 首先还是,只有一行直接返回
let arr = new Array(numRows).fill('') // 创建一个数组,存储每行
let n = numRows * 2 - 2
for (let i = 0; i < s.length; i++) {
i % n < numRows ? arr[i % n] += s[i] : arr[n - i % n] += s[i]
}
return arr.join('') // 拼接返回
};
8. 字符串转换整数 (atoi)
var myAtoi = function(str) {
let result = str.trim().match(/^[-|+]{0,1}[0-9]+/)
if (result != null) {
if (result[0] > (Math.pow(2, 31) - 1)) {
return Math.pow(2, 31) - 1
}
if (result[0] < Math.pow(-2, 31)) {
return Math.pow(-2, 31)
}
return result[0]
}
return 0
};
49. 字母异位词分组
var groupAnagrams = function(strs) {
const len = strs.length,
ans = new Map()
for (let i = 0; i < len; i++) {
let asc = strs[i].split('').sort().join()
if (ans.has(asc)) {
ans.get(asc).push(strs[i])
} else {
ans.set(asc, [strs[i]])
}
}
return Array.from(ans.values())
}
179. 最大数
var largestNumber = function(nums) {
if (Number(nums.join(''))) {
return nums.map(n => String(n)).sort((a, b) => (b + a) - (a + b)).join('')
}
return '0'
};
299. 猜数字游戏
var getHint = function(secret, guess) {
let guessList = guess.split('')
let secretList = secret.split('')
let A = 0
let B = 0
for (let i = 0; i < secretList.length; i++) {
if (secretList[i] == guess[i]) {
A++
guessList[i] = '-'
secretList[i] = '+'
}
}
for (let i = 0; i < secretList.length; i++) {
let index = guessList.indexOf(secretList[i])
if (index > -1) {
B++
guessList[index] = '-'
}
}
return `${A}A${B}B`
};
524. 通过删除字母匹配到字典里最长单词
var findLongestWord = function(s, dictionary) {
let res = ''
for (let i = 0; i < dictionary.length; i++) {
if (isSubsequence(s, dictionary[i])) {
res = !res ? dictionary[i] : getRight(res, dictionary[i])
}
}
function getRight(oldVal, newVal) {
if (oldVal.length > newVal.length) {
return oldVal
} else if (oldVal.length < newVal.length) {
return newVal
} else {
return oldVal < newVal ? oldVal : newVal
}
}
function isSubsequence(s, t) {
let i = 0
let j = 0
while (i < s.length) {
if (s[i] == t[j]) {
j++
}
if (j == t.length) {
return true
}
i++
}
return false
}
return res
};
539. 最小时间差
var findMinDifference = function(timePoints) {
if (timePoints.length > 1440) return 0 // 将时间转成分钟,24H=1440min,如果参数长度超过1440,说明有重复,直接返回0
let times = []
for (let i = 0; i < timePoints.length; i++) {
let hour = Number(timePoints[i].split(':')[0])
let min = Number(timePoints[i].split(':')[1])
times[i] = hour * 60 + min
}
times.sort((a, b) => a - b)
let min = 1440 - times[times.length - 1] + times[0] // 先把头尾差值当做 min
for (let i = 1; i < times.length; i++) {
min = Math.min(times[i] - times[i - 1], min)
}
return min
};
609. 在系统中查找重复文件
var findDuplicate = function(paths) {
let dicMap = {}
for (let i = 0; i < paths.length; i++) {
let dirs = paths[i].split(' ')
let root = dirs[0] + '/'
for (let j = 1; j < dirs.length; j++) {
let index = dirs[j].indexOf('(')
let txt = dirs[j].substring(0, index)
let cont = dirs[j].substring(index + 1, dirs[j].length - 1)
if (!dicMap[cont]) {
dicMap[cont] = []
}
dicMap[cont].push(root + txt)
}
}
let res = []
for (const key in dicMap) {
if (dicMap[key].length > 1) {
res.push(dicMap[key])
}
}
return res
};
648. 单词替换
var replaceWords = function(dictionary, sentence) {
let sentArr = sentence.split(' ')
for (let i = 0; i < sentArr.length; i++) {
for (let j = 0; j < dictionary.length; j++) {
if (sentArr[i].startsWith(dictionary[j])) {
sentArr[i] = dictionary[j]
}
}
}
return sentArr.join(' ')
};
leetcode中等(字符串):[3, 6, 8, 49, 179, 299, 524, 539, 609, 648]的更多相关文章
- Leetcode中字符串总结
本文是个人对LeetCode中字符串类型题目的总结,纯属个人感悟,若有不妥的地方,欢迎指出. 一.有关数字 1.数转换 题Interger to roman和Roman to integer这两题是罗 ...
- LeetCode:字符串的排列【567】
LeetCode:字符串的排列[567] 题目描述 给定两个字符串 s1 和 s2,写一个函数来判断 s2 是否包含 s1 的排列. 换句话说,第一个字符串的排列之一是第二个字符串的子串. 示例1: ...
- 前端与算法 leetcode 8. 字符串转换整数 (atoi)
目录 # 前端与算法 leetcode 8. 字符串转换整数 (atoi) 题目描述 概要 提示 解析 解法一:正则 解法二:api 解法二:手搓一个api 算法 传入测试用例的运行结果 执行结果 G ...
- 前端与算法 leetcode 387. 字符串中的第一个唯一字符
目录 # 前端与算法 leetcode 387. 字符串中的第一个唯一字符 题目描述 概要 提示 解析 解法一:双循环 解法二:Set法单循环 算法 传入测试用例的运行结果 执行结果 GitHub仓库 ...
- LeetCode:字符串相加【415】
LeetCode:字符串相加[415] 题目描述 给定两个字符串形式的非负整数 num1 和num2 ,计算它们的和. 注意: num1 和num2 的长度都小于 5100.num1 和num2 都只 ...
- LeetCode 43. 字符串相乘(Multiply Strings)
43. 字符串相乘 43. Multiply Strings 题目描述 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. ...
- LeetCode 8. 字符串转换整数 (atoi)(String to Integer (atoi))
8. 字符串转换整数 (atoi) 8. String to Integer (atoi) 题目描述 LeetCode LeetCode8. String to Integer (atoi)中等 Ja ...
- LeetCode 中等题解(4)
40 组合总和 II Question 给定一个数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合. candidates ...
- LeetCode之“字符串”:最短回文子串
题目链接 题目要求: Given a string S, you are allowed to convert it to a palindrome by adding characters in f ...
- LeetCode之“字符串”:最长回文子串
题目要求: 给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串.例如,给出字符串 "abcdzdcab",它的最长回文子串为 & ...
随机推荐
- OpenAI“杀疯了”,GPT–4o模型保姆级使用教程!一遍就会!
5月14日凌晨1点,OpenAI发布了名为GPT-4o 最新的大语言模型,再次引领了人工智能领域的又一创新浪潮,让整个行业都为之震动. 据OpenAI首席技术官穆里-穆拉提(Muri Murati)表 ...
- vue3:modal组件开发
项目环境 @vue/cli 4.5.8 最终效果 需求分析 显示/隐藏 点击遮罩层能否关闭 宽度和zIndex自定义 标题栏 -显示标题和关闭按钮 主体 底部 -内置取消和确定功能 前置知识 tele ...
- uniapp uni-number-box组件 步长为1,还能输入小数思路分享
正常情况,输入了步长为1,是无法在输入小数的.需求是要能输入一位小数,但如果直接步长设为0.1,又不能按1这样递增,输入数量上用起来肯定很麻烦. 于是我就想了一个折中方法,步长设为:1.01,然后值改 ...
- MyBatis缓存模块源码分析
优秀的ORM框架都应该提供缓存机制,MyBatis也不例外,在org.apache.ibatis.cache包下面定义了MyBatis缓存的核心模块,需要注意的是这个包中只是MyBatis缓存的核心实 ...
- SpringAi
Spring AI 初学 Spring AI 官方地址 "spring 不生产 AI,只是 AI 工具的搬运工" 项目可以查看gitee Open AI 前期准备 Open AI官 ...
- 用Yacht管理docker容器
今天是六一儿童节,祝大小朋友们节日快乐! 从今天开始起,防范区的上海市民可以自由出入小区了.始于愚人节,终于儿童节,整整两个月时间,终于迎来了期盼已久的自由和正常. 周一上午的的核酸可能是我们最后一次 ...
- 一文了解JVM面试篇(上)
Java内存区域 1.如何解释 Java 堆空间及 GC? 当通过 Java 命令启动 Java 进程的时候,会为它分配内存.内存的一部分用于创建 堆空间,当程序中创建对象的时候,就从对空间中分配内存 ...
- C++笔记(7)成员初始化列表
成员初始化列表由逗号分隔的初始化列表组成(前面带冒号),它位于参数列调的右括号之后,函数体左括号之前.如果数据成员的名称为mdata,并需要将它初始化为val,则初始化器为mdata(val). Cl ...
- js 求任意两数之间的和
知识点:函数的传参,函数的返回值 函数的传参 函数的参数包括以下两种类型: 1.形参:在定义函数时,声明的参数变量仅在函数内部可见: 2.实参:在调用函数时,实际传入的值. 示例 我们在定义函数的时候 ...
- sshd服务部署
sshd服务部署 软件安装修改配置文件启动使用 1.搭建所有服务的套路 关闭防火墙和selinux(实验环境都先关闭掉) 配置yum源(公网源或者本地源) 软件安装和检查 了解并修改配置文件 启动服 ...