当前位置: 首页 > news >正文

TinyURL 的加密与解密、猜数字游戏、 Fizz Buzz、相对名次----2023/4/28

TinyURL 的加密与解密----2023/4/28

TinyURL 是一种 URL 简化服务, 比如:当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时,它将返回一个简化的URL http://tinyurl.com/4e9iAk 。请你设计一个类来加密与解密 TinyURL 。
加密和解密算法如何设计和运作是没有限制的,你只需要保证一个 URL 可以被加密成一个 TinyURL ,并且这个 TinyURL 可以用解密方法恢复成原本的 URL 。
实现 Solution 类:
Solution() 初始化 TinyURL 系统对象。
String encode(String longUrl) 返回 longUrl 对应的 TinyURL 。
String decode(String shortUrl) 返回 shortUrl 原本的 URL 。题目数据保证给定的 shortUrl 是由同一个系统对象加密的。

示例:

输入:url = "https://leetcode.com/problems/design-tinyurl"
输出:"https://leetcode.com/problems/design-tinyurl"
解释:
Solution obj = new Solution();
string tiny = obj.encode(url); // 返回加密后得到的 TinyURL 。
string ans = obj.decode(tiny); // 返回解密后得到的原本的 URL 。

提示:
1 <= url.length <= 104
题目数据保证 url 是一个有效的 URL

题解1:参考

class Codec:def __init__(self):self.id = 1self.hashmap = {}def encode(self, longUrl: str) -> str:"""Encodes a URL to a shortened URL."""self.hashmap[self.id] = longUrlshortUrl = 'http://tinyurl.com/' + str(self.id)self.id += 1return shortUrldef decode(self, shortUrl: str) -> str:"""Decodes a shortened URL to its original URL."""r = shortUrl.rfind('/')id = int(shortUrl[r+1:])return self.hashmap[id]

题解2:参考

import hashlib
class Codec:def __init__(self):self.database = {}def encode(self, longUrl: str) -> str:"""Encodes a URL to a shortened URL."""_md5 = hashlib.md5()_md5.update(longUrl.encode('utf-8'))res = _md5.hexdigest()self.database[res] = longUrlreturn f"http://tinyurl.com/{res}"def decode(self, shortUrl: str) -> str:"""Decodes a shortened URL to its original URL."""return self.database[shortUrl.split("/")[-1]]

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/encode-and-decode-tinyurl
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

猜数字游戏----2023/4/28

你在和朋友一起玩 猜数字(Bulls and Cows)游戏,该游戏规则如下:
写出一个秘密数字,并请朋友猜这个数字是多少。朋友每猜测一次,你就会给他一个包含下述信息的提示:
猜测数字中有多少位属于数字和确切位置都猜对了(称为 “Bulls”,公牛),
有多少位属于数字猜对了但是位置不对(称为 “Cows”,奶牛)。也就是说,这次猜测中有多少位非公牛数字可以通过重新排列转换成公牛数字。
给你一个秘密数字 secret 和朋友猜测的数字 guess ,请你返回对朋友这次猜测的提示。
提示的格式为 “xAyB” ,x 是公牛个数, y 是奶牛个数,A 表示公牛,B 表示奶牛。
请注意秘密数字和朋友猜测的数字都可能含有重复数字。

示例 1:

输入:secret = "1807", guess = "7810"
输出:"1A3B"
解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
"1807"|
"7810"

示例2:

输入:secret = "1123", guess = "0111"
输出:"1A1B"
解释:数字和位置都对(公牛)用 '|' 连接,数字猜对位置不对(奶牛)的采用斜体加粗标识。
"1123"        "1123"|      or     |
"0111"        "0111"
注意,两个不匹配的 1 中,只有一个会算作奶牛(数字猜对位置不对)。通过重新排列非公牛数字,其中仅有一个 1 可以成为公牛数字。

提示:
1 <= secret.length, guess.length <= 1000
secret.length == guess.length
secret 和 guess 仅由数字组成

题解:

class Solution:def getHint(self, secret: str, guess: str) -> str:x, y= 0, 0utils = {}for i in range(len(secret)):if secret[i] == guess[i]:x += 1utils[secret[i]] = utils.get(secret[i], 0) + 1for i in guess:if i in utils and utils[i] > 0:y += 1utils[i] -= 1return f'{x}A{y-x}B'

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/bulls-and-cows
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

Fizz Buzz----2023/4/28

给你一个整数 n ,找出从 1 到 n 各个整数的 Fizz Buzz 表示,并用字符串数组 answer(下标从 1 开始)返回结果,其中:
answer[i] == “FizzBuzz” 如果 i 同时是 3 和 5 的倍数。
answer[i] == “Fizz” 如果 i 是 3 的倍数。
answer[i] == “Buzz” 如果 i 是 5 的倍数。
answer[i] == i (以字符串形式)如果上述条件全不满足。

示例1:

输入:n = 3
输出:["1","2","Fizz"]

示例2:

输入:n = 5
输出:["1","2","Fizz","4","Buzz"]

示例3:

输入:n = 15
输出:["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

提示:
1 <= n <= 104

题解:

class Solution:def fizzBuzz(self, n: int) -> List[str]:res = []for i in range(1, n+1):if i % 3 == 0 and i % 5 == 0:res.append("FizzBuzz")elif i % 3 == 0:res.append("Fizz")elif i % 5 == 0:res.append("Buzz")else:res.append(str(i))return res

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/fizz-buzz
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

相对名次----2023/4/28

给你一个长度为 n 的整数数组 score ,其中 score[i] 是第 i 位运动员在比赛中的得分。所有得分都 互不相同 。
运动员将根据得分 决定名次 ,其中名次第 1 的运动员得分最高,名次第 2 的运动员得分第 2 高,依此类推。运动员的名次决定了他们的获奖情况:
名次第 1 的运动员获金牌 “Gold Medal” 。
名次第 2 的运动员获银牌 “Silver Medal” 。
名次第 3 的运动员获铜牌 “Bronze Medal” 。
从名次第 4 到第 n 的运动员,只能获得他们的名次编号(即,名次第 x 的运动员获得编号 “x”)。
使用长度为 n 的数组 answer 返回获奖,其中 answer[i] 是第 i 位运动员的获奖情况。

示例1:

输入:score = [5,4,3,2,1]
输出:["Gold Medal","Silver Medal","Bronze Medal","4","5"]
解释:名次为 [1st, 2nd, 3rd, 4th, 5th] 。

示例2:

输入:score = [10,3,8,9,4]
输出:["Gold Medal","5","Bronze Medal","Silver Medal","4"]
解释:名次为 [1st, 5th, 3rd, 2nd, 4th] 。

提示:
n == score.length
1 <= n <= 104
0 <= score[i] <= 106
score 中的所有值 互不相同

题解:参考

class Solution:def findRelativeRanks(self, score: List[int]) -> List[str]:score_sorted = sorted(score, reverse = True)rank_list = ["Gold Medal", "Silver Medal", "Bronze Medal"] + [str(i+4) for i in range(len(score)-3)]dic = dict(zip(score_sorted, rank_list))res = [dic.get(i) for i in score]return res

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/relative-ranks
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

http://www.lryc.cn/news/62771.html

相关文章:

  • Spring boot结合SkyWalking-Trace工具类实现日志打印请求链路traceid
  • 精通ES=ElasticSearch
  • RabbitMQ-扇形交换机(Fanout )
  • Python 学习曲线 从 Python 新手到 Pro
  • 薪资18K需要什么水平?来看看98年测试工程师的面试全过程…
  • 基于趋动云的 Stable Diffusion Webui 环境搭建
  • 备忘录设计模式解读
  • 股票期货模拟交易有用吗?股票期货模拟交易心得
  • 2023年五月份图形化三级打卡试题
  • 【华为OD机试真题】字母组合(javapython)100%通过率 详细代码注释
  • 精彩!openEuler 社区年度顶级会议发生了啥?
  • Confidential Containers发布0.5.0版本,龙蜥将基于八大特性构建开箱即用的机密容器解决方案
  • 独立储能的现货电能量与调频辅助服务市场出清协调机制(Matlab代码实现)
  • 使用 Luckysheet 可实现 Web 的 Excel
  • 时间序列预测(一)基于Prophet的销售额预测
  • 【电科复试第一名】23上交819考研经验分享
  • 每日学术速递4.24
  • 怎么把mkv文件转成mp4格式,3招立马处理
  • SEO机制算是让我玩明白了
  • JDBC连接数据库详细教程指南
  • 换个花样玩C++(2)柔性数组怎么玩
  • 【前端】一个好看的前端页面
  • flink on k8s提交任务
  • 如何判定自己适合自学编程还是报班?
  • 本地缓存解决方案Caffeine | Spring Cloud 38
  • Docker常用命令笔记
  • Nachos系统的上下文切换
  • streamx平台部署
  • css中的background属性
  • 代码评审平台Gerrit安装配置方法介绍