深信服笔试0922
两道题,第一道0.9,第二道0.8。
第一题本想骗点分,没想到过了0.9
第一题:
if __name__ == '__main__': s = input() if len(s) % 2 == 0 and s == s[::-1]: print(True) else: print(False)第二题:
# 特殊二分查找 if __name__ == '__main__': nums = input() nums = nums[1:] nums = nums[:(len(nums) - 1)] nums = nums.split(',') nums = [int(x) for x in nums] target = int(input()) # nums, target = [4], 4 if len(nums) == 1: if nums[0] == target: print(0) else: print(-1) exit() if len(nums) == 0: print(-1) exit() is_found = False start, end = 0, len(nums) - 1 while start < end: if nums[start] == target: print(start) is_found = True break if nums[end] == target: print(end) is_found = True break mid = (start + end) // 2 if nums[mid] == target: print(mid) is_found = True break if nums[mid] > nums[start]:# 前半段有序 if nums[mid] > target and target > nums[start]:# 在左半部分找 end = mid - 1 else:# 在右半部分找 start = mid + 1 if nums[mid] < nums[start]:# 前半段无序,后半段有序 if nums[end] > target and target > nums[mid]:# 在右半部分找 start = mid + 1 else:# 在左半部分找 end = mid - 1 if not is_found: print(-1)