对称子字符串(python3)

Description

Given a string ‘str’ of digits, find length of the longest substring of ‘str’, such that the length of the substring is 2k digits and sum of left k digits is equal to the sum of right k digits.

Input

输入第一行是测试用例的个数,后面每一行表示一个数字组成的字符串,例如:"123123"。

Output

输出找到的满足要求的最长子串的长度。例如,给定的例子长度应该是 6。每行对应一个用例的结果。

Sample Input 1

1
1538023

Sample Output 1

4

Solution

def find_max_len(nums):
    for k in range(len(nums) // 2, 0, -1): # 从大到小遍历所有可能的k值
        for mid in range(k, len(nums) - k + 1): # 在该k值下遍历所有可能的中间数
            if sum(nums[mid - k:mid]) == sum(nums[mid:mid + k]): # 左k和右k求和
                return 2 * k #返回子串的长度
    return 0

if __name__ == "__main__":
    T = int(input())
    while T:
        T -= 1
        nums = list(map(int, input()))
        print(find_max_len(nums))
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。