代码能力太差了,在leetCode上做点简单的题。记录一下😀
代码能力完全是入门级别。。只会写点异常简单的东西,准备做点题提升下能力。
在做题过程中,我会尽可能使用我接触过的python
,java
,c++
来解题。
当然,“尽可能”,写不写的出来就是另外一回事了
1.两数之和 描述:给定一个整数数组 nums
和一个整数目标值 target
,请你在该数组中找出 和为目标值 target
的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
思路就是遍历给定数组中的每个元素,让他们都加一遍,两数之和进if
条件判断
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 class Solution : def twoSum (self, nums, target ): listlen = len (nums) for i in range (listlen): for j in range (listlen): if nums[i] + nums[j] == target: print (f"Answer: {i} , {j} !" ) nums = [2 , 7 , 11 , 15 ] target = 9 solution = Solution() solution.twoSum(nums, target)
java
的不会写~直接看了官方答案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Solution { public int [] twoSum(int [] nums, int target) { int n = nums.length; for (int i = 0 ; i < n; ++i) { for (int j = i + 1 ; j < n; ++j) { if (nums[i] + nums[j] == target) { return new int []{i, j}; } } } return new int [0 ]; } }
2.无重复字符的最长字串 做题感受:我是SB
给定一个字符串 s
,请你找出其中不含有重复字符的 最长子串 的长度。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 def length_of_longest_substring (s ): char_dict = {} start = 0 end = 0 max_length = 0 for i, char in enumerate (s): if char in char_dict and char_dict[char] >= start: start = char_dict[char] + 1 end = i char_dict[char] = i max_length = max (max_length, end - start + 1 ) return max_length
3.计算列车到站时间 给你一个正整数 arrivalTime
表示列车正点到站的时间(单位:小时),另给你一个正整数 delayedTime
表示列车延误的小时数。
返回列车实际到站的时间。
注意,该问题中的时间采用 24 小时制。
思路就是求和取模
1 2 3 4 5 6 7 8 9 10 11 12 13 class Solution : def getReal (self ): arrivalTime = int (input ("请输入列车正点到站时间:" )) delayedTime = int (input ("请输入列车延误的小时数:" )) realTime = (arrivalTime + delayedTime) % 24 print (f"列车本该在{arrivalTime} 点到站,但延误了{delayedTime} 小时,所以实际到站时间为{realTime} 点!" ) solution = Solution() solution.getReal()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 import java.util.Scanner; public class Main { public static void main (String[] args) { Scanner scanner = new Scanner (System.in); System.out.print("请输入列车正点到站时间:" ); int arrivalTime = scanner.nextInt(); System.out.print("请输入列车延误的小时数:" ); int delayedTime = scanner.nextInt(); int realTime = (arrivalTime + delayedTime) % 24 ; System.out.println("列车本该在" + arrivalTime + "点到站,但延误了" + delayedTime + "小时,所以实际到站时间为" + realTime + "点!" ); scanner.close(); } }
4.罗马数字转整数 罗马数字包含以下七种字符: I
, V
, X
, L
,C
,D
和 M
。
1 2 3 4 5 6 7 8 字符 数值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
。这个特殊的规则只适用于以下六种情况:
I
可以放在 V
(5) 和 X
(10) 的左边,来表示 4 和 9。
X
可以放在 L
(50) 和 C
(100) 的左边,来表示 40 和 90。
C
可以放在 D
(500) 和 M
(1000) 的左边,来表示 400 和 900。
给定一个罗马数字,将其转换成整数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 class Solution : def romanToInt (self, luoma ): roman_map = {'I' : 1 , 'V' : 5 , 'X' : 10 , 'L' : 50 , 'C' : 100 , 'D' : 500 , 'M' : 1000 } result = 0 prev_value = 0 for char in luoma: value = roman_map[char] if value > prev_value: result += value - 2 * prev_value else : result += value prev_value = value return result s = Solution() input_roman = input ("请输入一个罗马数字:" )print (s.romanToInt(input_roman))
5.回文数 给你一个整数 x
,如果 x
是一个回文整数,返回 true
;否则,返回 false
。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
思路就是先把数字转换成字符串,然后计算长度利用切片分别返回正序倒序的结果。判断是否相等然后输出。
一开始还是想利用input
函数提示用户输入,然后利用Int
转换为整数,再利用str
转成字符串,后来觉得没任何必要。。直接number = input("请输入一个数字。我会判断是不是回文数:")
就行。然后利用len
函数计算字符串长度,再利用切片去看正序倒序结果,if
判断然后输入就行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 class Solution : def check_it (self,num ): zhengxv = num[::] daoxv = num[::-1 ] if zhengxv == daoxv: print (f"{num} 是一个回文数" ) else : print (f"{num} 不是一个回文数" ) s = Solution() num = input ("请输入一个数字。我会判断是不是回文数:" )print (s.check_it(num))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 public class Solution { public boolean check_it (int num) { String numStr = String.valueOf(num); String reverseNumStr = new StringBuilder (numStr).reverse().toString(); if (numStr.equals(reverseNumStr)) { System.out.println(num + " 是一个回文数" ); return true ; } else { System.out.println(num + " 不是一个回文数" ); return false ; } } public static void main (String[] args) { Solution solution = new Solution (); int num = 12321 ; solution.check_it(num); } }