class Solution:
def detectCapitalUse(self, word: str) -> bool:
return word == word.upper() or word == word.lower() or word == word.title()
788. 旋转数字
class Solution:
def rotatedDigits(self, N: int) -> int:
res=0
for i in range(1,N+1):
s=str(i)
if '3' in s or '4' in s or '7' in s :continue
if '2' in s or '5' in s or '6' in s or '9' in s:res+=1
return res
824. 山羊拉丁文
1、首刷
class Solution:
def toGoatLatin(self, S: str) -> str:
res = S.split(' ')
for i in range(len(res)):
if res[i][0].lower() in 'aeiou':
res[i] += 'ma'
res[i] += 'a' * (i + 1)
else:
res[i] += res[i][0]
res[i] = res[i][1:]
res[i] += 'ma'
res[i] += 'a' * (i + 1)
return ' '.join(res)
2、精简
class Solution:
def toGoatLatin(self, S: str) -> str:
res = S.split(' ')
for i in range(len(res)):
if res[i][0].lower() in 'aeiou':
res[i] = res[i] + 'ma' + 'a' * (i + 1)
else:
res[i] = res[i][1:] + res[i][0] + 'ma' + 'a'*(i+1)
return ' '.join(res)
13. 罗马数字转整数
class Solution:
def romanToInt(self, s: str) -> int:
a = [1, 4, 5,9 ,10, 40, 50, 90, 100,400, 500,900,1000]
b= ['I', 'IV', 'V', 'IX', 'X', 'XL', 'L', 'XC', 'C','CD', 'D', 'CM', 'M']
c = zip(b,a)
dic = {}
for i in c:
dic[i[0]] = i[1]
num = 0
for i in s:
num += dic[i]
if 'IV' in s:
num -= 2
if 'IX' in s:
num -= 2
if 'XL' in s:
num -= 20
if 'XC' in s:
num -= 20
if 'CD' in s:
num -= 200
if 'CM' in s:
num -= 200
return num
class Solution:
def romanToInt(self, s: str) -> int:
num = 0
s = s.replace('IV','Q')
s = s.replace('IX','W')
s = s.replace('XL','E')
s = s.replace('XC','R')
s = s.replace('CD','T')
s = s.replace('CM','Y')
dic = {}
dic['I'] = 1
dic['V'] = 5
dic['X'] = 10
dic['L'] = 50
dic['C'] = 100
dic['D'] = 500
dic['M'] = 1000
dic['Q'] = 4
dic['W'] = 9
dic['E'] = 40
dic['R'] = 90
dic['T'] = 400
dic['Y'] = 900
for i in s:
if not i in dic:
return False
else:
num += dic[i]
return num
521. 最长特殊序列 Ⅰ
暴力
class Solution:
def findLUSlength(self, a: str, b: str) -> int:
if a == b:
return -1
else:
arr = set()
brr = set()
for i in range(len(a) - 1):
for j in range(i + 1,len(a) + 1):
arr.add(a[i:j])
for i in range(len(b) - 1):
for j in range(i + 1, len(b) + 1):
brr.add(b[i:j])
c = arr & brr
print(len(a), len(b), len(c))
if c == a:
return len(b)
elif c == b:
return len(a)
else:
ret = 0
for i in arr:
if i not in c:
ret = max(len(i), ret)
for i in brr:
if i not in c:
ret = max(len(i), ret)
return ret
审题
class Solution:
def findLUSlength(self, a: str, b: str) -> int:
if a == b:
return -1
else:
return max(len(a), len(b))
929.独特的电子邮件地址
find
class Solution:
def numUniqueEmails(self, emails: List[str]) -> int:
res = set()
for email in emails:
name, domain = email.split('@')
if '+' in email:
name = name[:name.find('+')].replace('.', '')
else:
name = name.replace('.', '')
res.add(name + '@' + domain)
return len(res)
join
class Solution:
def numUniqueEmails(self, emails: List[str]) -> int:
res = set()
for email in emails:
if '+' in email:
pre = email.split('+')[0]
else:
pre = email.split('@')[0]
pre = ''.join(pre.split('.'))
pos = email.split('@')[-1]
mail = pre + '@' + pos
res.add(mail)
return len(res)
557. 反转字符串中的单词 III
class Solution:
def reverseWords(self, s: str) -> str:
return ' '.join([i[::-1] for i in s.split(' ')])
344. 反转字符串
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
# for i in range(0,len(s)//2):
# j = len(s) - 1 - i
# s[i],s[j] = s[j], s[i]
s.reverse()
657. 机器人能否返回原点
class Solution:
def judgeCircle(self, moves: str) -> bool:
return moves.count('L') == moves.count('R') and moves.count('U') == moves.count('D')
leetcode-804
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
letter = [chr(i) for i in range(ord('a'), ord('z') + 1)]
code = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
c = zip(letter, code)
dic = {}
res = []
ret = set()
for i in c:
dic[i[0]] = i[1]
for word in words:
ret.add(''.join([dic.get(i) for i in word]))
return len(ret)