深信服笔试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)
