Codility每周一课:P99.2 StrSymmetryPo

作者: AiFany | 来源:发表于2019-03-21 14:03 被阅读0次
    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

    相关文章

      网友评论

        本文标题:Codility每周一课:P99.2 StrSymmetryPo

        本文链接:https://www.haomeiwen.com/subject/vsvqvqtx.html