leetcode 两数之和 整数反转 回文数 罗马数字转整数
生活随笔
收集整理的這篇文章主要介紹了
leetcode 两数之和 整数反转 回文数 罗马数字转整数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.兩數之和
給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,并返回他們的數組下標。
你可以假設每種輸入只會對應一個答案。但是,你不能重復利用這個數組中同樣的元素。
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:dict_dog = dict()dict_pig = dict()for i, j in enumerate(nums):dict_pig[j] = ifor m, n in enumerate(nums):dict_dog[m] = nfor x, y in dict_dog.items():ttt = target - yw = dict_pig.get(ttt)if ttt in dict_dog.values():if x != w and w is not None:if x < w:return x,welse:continue這個題目Nick老師講過一次,但是我覺得我的想法不一樣,我就按照我自己的想法寫了這一題。(想了一下午,畢竟學習的還不夠)
2.整數反轉
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
class Solution:def reverse(self, x: int) -> int:str_x = str(x)list_x = []y = ""if str_x[0:1] == "0":return 0elif str_x[0:1] == "-":for i in range(len(str_x) - 1):list_x.append(str_x[i + 1])list_x.reverse()for j in list_x: # type:stry = y + jx = "-" + yx = int(x)if x < (2 ** 31 - 1) and x > ((-2) ** 31):return xelse:return 0else:for i in range(len(str_x)):list_x.append(str_x[i])list_x.reverse()for j in list_x: # type:stry = y + jy = int(y)if y < (2 ** 31 - 1) and y > ((-2) ** 31):return yelse:return 03.回文數
判斷一個整數是否是回文數。回文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
class Solution:def isPalindrome(self, x: int) -> bool:list_x = []list_re = []if x < 0:return Falseelse:str_x = str(x)list_x.extend(str_x)list_re.extend(str_x)list_x.reverse()if list_x == list_re:return Trueelse:return False4.羅馬數字轉整數
羅馬數字包含以下七種字符: 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。這個特殊的規則只適用于以下六種情況:
class Solution:def romanToInt(self, s: str) -> int:dic_roman = {'I': 1, 'IV': 4, 'V': 5, 'IX': 9, 'X': 10, 'XL': 40, 'L': 50, 'XC': 90, 'C': 100, 'CD': 400, 'D': 500,'CM': 900, 'M': 1000}list_s = list()list_ag = list()count = 0for i in s:list_s.append(i)for t in range(len(list_s) - 1):tm = list_s[t] + list_s[t + 1]if tm in dic_roman:list_ag.append(tm)for j in list_ag:count += dic_roman[j]s = s.replace(j, "")for q in s:count += dic_roman[q]return count總結一下,這些是我這幾天寫的題目中的一部分,感覺大部分是考慮的比較多,因為測試用例多了,然后就是自己對一些函數以及方法的應用很欠缺。再有就是每次寫完去瀏覽別人的代碼的時候發現,別人只寫了幾行,而我寫的基本上都是他的五倍左右的代碼量。
轉載于:https://www.cnblogs.com/xiongchao0823/p/11252932.html
總結
以上是生活随笔為你收集整理的leetcode 两数之和 整数反转 回文数 罗马数字转整数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数学优化
- 下一篇: 用ironpython驱动你的计算公式