示例
假设给出的字符串是'abccbaad'
然后,子字符串将为'abc',其反向将为'cba'
都存在于给定的字符串中。
你怎么能找到他们两个?
请尽可能提供代码段。
注意:子字符串的长度> 1
更新:来自某个位置的子字符串中使用的字符不应再用于反向字符串。
例如。 假设索引2中的'c'在子字符串中使用,那么它也不应该在反向字符串中使用,但允许来自索引3的'c'。
答案 0 :(得分:1)
我假设您要找到所有子字符串,其反向也出现在给定字符串中。
在这种情况下,建立在这个答案之上 - find all substrings:
def get_all_substrings(input_string):
output_strings = list()
length = len(input_string)
for i in xrange(length): # Iterate through all indices of the string
for j in xrange(i + 1, length): # Iterate through indices starting from i + 1 to end of the string, so as to obtain substrings of length > 1
substr = input_string[i:j + 1] # Slice the substring
if substr[::-1] in input_string: # Check if the substring's reverse exists in the original string
output_strings.append(substr) # If it does, add it to a list
return output_strings
print get_all_substrings("abccbaad") # Output - ['ab', 'abc', 'abcc', 'abccb', 'abccba', 'bc', 'bcc', 'bccb', 'bccba', 'cc', 'ccb', 'ccba', 'cb', 'cba', 'ba', 'aa']