在二维平面上,有一个机器人从原点 (0, 0) 开始。给出它的移动顺序,判断这个机器人在完成移动后是否在 (0, 0) 处结束。python
移动顺序由字符串表示。字符 move[i] 表示其第 i 次移动。机器人的有效动做有 R
(右),L
(左),U
(上)和 D
(下)。若是机器人在完成全部动做后返回原点,则返回 true。不然,返回 false。数组
注意:机器人“面朝”的方向可有可无。 “R” 将始终使机器人向右移动一次,“L” 将始终向左移动等。此外,假设每次移动机器人的移动幅度相同。code
示例 1:排序
输入: "UD" 输出: true 解释:机器人向上移动一次,而后向下移动一次。全部动做都具备相同的幅度,所以它最终回到它开始的原点。所以,咱们返回 true。
示例 2:leetcode
输入: "LL" 输出: false 解释:机器人向左移动两次。它最终位于原点的左侧,距原点有两次 “移动” 的距离。咱们返回 false,由于它在移动结束时没有返回原点。
#思路一 把水平和垂直分开用两个值表明,LR表明水平加减,UD表明垂直方向加减 #思路二(再思路一上进行改进) LR字符串存在的个数相同和UD字符串存在的个数相同 及返回原点
#思路一解答 class Solution: def judgeCircle(self, moves: str) -> bool: level = 0 level_list = ['R','L'] vertical = 0 vertical_list = ['U','D'] for a in moves: if a =='R': level += 1 elif a=='L': level -=1 elif a =='U': vertical += 1 elif a == 'D': vertical -= 1 if level == 0 and vertical ==0: return True else: return False #思路二解答 class Solution(object): def judgeCircle(self, moves): """ :type moves: str :rtype: bool """ if moves.count('D') == moves.count('U') and moves.count('L') == moves.count('R'): return True else: return False
给定一个非负整数数组 A
,返回一个数组,在该数组中, A
的全部偶数元素以后跟着全部奇数元素。字符串
你能够返回知足此条件的任何数组做为答案。get
示例:it
输入:[3,1,2,4] 输出:[2,4,3,1] 输出 [4,2,3,1],[2,4,1,3] 和 [4,2,1,3] 也会被接受。
提示:io
1 <= A.length <= 5000
0 <= A[i] <= 5000
利用偶数特效%2余0而后进行对调位置
class Solution: def sortArrayByParity(self, A: List[int]) -> List[int]: i = 0 for j in range(len(A)): if A[j] % 2 == 0: A[i], A[j] = A[j], A[i] i += 1 return A
给定一个正整数,输出它的补数。补数是对该数的二进制表示取反。class
注意:
示例 1:
输入: 5 输出: 2 解释: 5的二进制表示为101(没有前导零位),其补数为010。因此你须要输出2。
示例 2:
输入: 1 输出: 0 解释: 1的二进制表示为1(没有前导零位),其补数为0。因此你须要输出0。
按照题目描述走,先变成二进制,而后去除前倒数,再01兑换,再二进制变成整型
class Solution: def findComplement(self, num: int) -> int: num = bin(num) num = num[2:] new_num = '' for a in num: if a == '0': new_num += '1' else: new_num += '0' return int(new_num,2)
有更加好的思路,或者解题方法评论区留言谢谢