Codility每周一课:P99.2 StrSymmetryPoint

版权声明:AnFany https://blog.csdn.net/qq_32882309/article/details/88715200

0.png

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
  • 结果

image

点击获得更多编程练习题。欢迎Follow,感谢Star!!! 扫描关注微信公众号pythonfan,获取更多。

image

image

猜你喜欢

转载自blog.csdn.net/qq_32882309/article/details/88715200