代码能力太差了,在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);     } }