P99.2 StrSymmetryPoint
Find a symmetry point of a string, if any.
-
P99.2 对称字符串
找到字符串中的某个字符,使得由这个字符分割的前后2部分字符串是对称的
编写函数:
def solution(S)
从给出的字符串S中,找到并返回这样一个字符的下标(下标从0开始),使得这个字符左边的子字符串,刚好与右边的子字符串相反,但如果不存在这样的字符,返回−1。
例如,字符串S="racecar",函数应该返回3,因为对于下标为3的字符"e", 其左边相邻的子字符串是 "rac", 而右边相邻的子字符串是 "car",正好2个字符串是对称的。注:与空字符串(长度为0的字符串)对称的还是一个空字符串。
假定:
1,字符串S的长度为区间[0,2,000,000]内的整数;
- 解题思路
根据字符串的长度判断,是偶数的话,肯定不可以。是奇数的话,等于1是肯定可以的。当不为1的奇数时,就判断前部分的字符串的逆序是否和后半部分一样。
- Python3代码
# -*- coding:utf-8 -*-
# &Author AnFany
# Lesson 99:Future training
# P 99.2 StrSymmetryPoint
def solution(S):
"""
判断字符串S是否是中心对称的
:param S: 字符串
:return: 返回中心字符的下标或者-1
"""
length = len(S)
if length % 2 == 0:
return -1
if length == 1:
return 0
center = length // 2
if S[:center][::-1] == S[center+1:]:
return center
else:
return -1
- 结果
点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。
image image
网友评论