朝陽(yáng)網(wǎng)站建設(shè) 慈云寺網(wǎng)絡(luò)營(yíng)銷推廣方案模板
TinyURL 的加密與解密----2023/4/28
TinyURL 是一種 URL 簡(jiǎn)化服務(wù), 比如:當(dāng)你輸入一個(gè) URL https://leetcode.com/problems/design-tinyurl 時(shí),它將返回一個(gè)簡(jiǎn)化的URL http://tinyurl.com/4e9iAk 。請(qǐng)你設(shè)計(jì)一個(gè)類來(lái)加密與解密 TinyURL 。
加密和解密算法如何設(shè)計(jì)和運(yùn)作是沒(méi)有限制的,你只需要保證一個(gè) URL 可以被加密成一個(gè) TinyURL ,并且這個(gè) TinyURL 可以用解密方法恢復(fù)成原本的 URL 。
實(shí)現(xiàn) Solution 類:
Solution() 初始化 TinyURL 系統(tǒng)對(duì)象。
String encode(String longUrl) 返回 longUrl 對(duì)應(yīng)的 TinyURL 。
String decode(String shortUrl) 返回 shortUrl 原本的 URL 。題目數(shù)據(jù)保證給定的 shortUrl 是由同一個(gè)系統(tǒng)對(duì)象加密的。
示例:
輸入: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
題目數(shù)據(jù)保證 url 是一個(gè)有效的 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]]
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/encode-and-decode-tinyurl
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
猜數(shù)字游戲----2023/4/28
你在和朋友一起玩 猜數(shù)字(Bulls and Cows)游戲,該游戲規(guī)則如下:
寫(xiě)出一個(gè)秘密數(shù)字,并請(qǐng)朋友猜這個(gè)數(shù)字是多少。朋友每猜測(cè)一次,你就會(huì)給他一個(gè)包含下述信息的提示:
猜測(cè)數(shù)字中有多少位屬于數(shù)字和確切位置都猜對(duì)了(稱為 “Bulls”,公牛),
有多少位屬于數(shù)字猜對(duì)了但是位置不對(duì)(稱為 “Cows”,奶牛)。也就是說(shuō),這次猜測(cè)中有多少位非公牛數(shù)字可以通過(guò)重新排列轉(zhuǎn)換成公牛數(shù)字。
給你一個(gè)秘密數(shù)字 secret 和朋友猜測(cè)的數(shù)字 guess ,請(qǐng)你返回對(duì)朋友這次猜測(cè)的提示。
提示的格式為 “xAyB” ,x 是公牛個(gè)數(shù), y 是奶牛個(gè)數(shù),A 表示公牛,B 表示奶牛。
請(qǐng)注意秘密數(shù)字和朋友猜測(cè)的數(shù)字都可能含有重復(fù)數(shù)字。
示例 1:
輸入:secret = "1807", guess = "7810"
輸出:"1A3B"
解釋:數(shù)字和位置都對(duì)(公牛)用 '|' 連接,數(shù)字猜對(duì)位置不對(duì)(奶牛)的采用斜體加粗標(biāo)識(shí)。
"1807"|
"7810"
示例2:
輸入:secret = "1123", guess = "0111"
輸出:"1A1B"
解釋:數(shù)字和位置都對(duì)(公牛)用 '|' 連接,數(shù)字猜對(duì)位置不對(duì)(奶牛)的采用斜體加粗標(biāo)識(shí)。
"1123" "1123"| or |
"0111" "0111"
注意,兩個(gè)不匹配的 1 中,只有一個(gè)會(huì)算作奶牛(數(shù)字猜對(duì)位置不對(duì))。通過(guò)重新排列非公牛數(shù)字,其中僅有一個(gè) 1 可以成為公牛數(shù)字。
提示:
1 <= secret.length, guess.length <= 1000
secret.length == guess.length
secret 和 guess 僅由數(shù)字組成
題解:
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'
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/bulls-and-cows
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
Fizz Buzz----2023/4/28
給你一個(gè)整數(shù) n ,找出從 1 到 n 各個(gè)整數(shù)的 Fizz Buzz 表示,并用字符串?dāng)?shù)組 answer(下標(biāo)從 1 開(kāi)始)返回結(jié)果,其中:
answer[i] == “FizzBuzz” 如果 i 同時(shí)是 3 和 5 的倍數(shù)。
answer[i] == “Fizz” 如果 i 是 3 的倍數(shù)。
answer[i] == “Buzz” 如果 i 是 5 的倍數(shù)。
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
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/fizz-buzz
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
相對(duì)名次----2023/4/28
給你一個(gè)長(zhǎng)度為 n 的整數(shù)數(shù)組 score ,其中 score[i] 是第 i 位運(yùn)動(dòng)員在比賽中的得分。所有得分都 互不相同 。
運(yùn)動(dòng)員將根據(jù)得分 決定名次 ,其中名次第 1 的運(yùn)動(dòng)員得分最高,名次第 2 的運(yùn)動(dòng)員得分第 2 高,依此類推。運(yùn)動(dòng)員的名次決定了他們的獲獎(jiǎng)情況:
名次第 1 的運(yùn)動(dòng)員獲金牌 “Gold Medal” 。
名次第 2 的運(yùn)動(dòng)員獲銀牌 “Silver Medal” 。
名次第 3 的運(yùn)動(dòng)員獲銅牌 “Bronze Medal” 。
從名次第 4 到第 n 的運(yùn)動(dòng)員,只能獲得他們的名次編號(hào)(即,名次第 x 的運(yùn)動(dòng)員獲得編號(hào) “x”)。
使用長(zhǎng)度為 n 的數(shù)組 answer 返回獲獎(jiǎng),其中 answer[i] 是第 i 位運(yùn)動(dòng)員的獲獎(jiǎng)情況。
示例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
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode.cn/problems/relative-ranks
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。