이 문서에서는 주어진 문자열에 대해 모든 하위 시퀀스가 회문 시퀀스인지 여부를 결정하는 Python의 방법을 주로 소개합니다. 여기에는 문자열 탐색, 판단 및 연산과 관련된 Python의 작업 기술이 포함됩니다. 도움이 필요한 친구는 이 문서의 예제를 참조할 수 있습니다.
Python의 주어진 문자열에 대해 모든 하위 시퀀스가 회문 시퀀스인지 확인하는 방법입니다. 참조를 위해 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
질문:
문자열이 주어지면 모든 하위 시퀀스를 구하고 그것이 회문 시퀀스인지 확인하세요
아이디어:
문자 쌍 조각을 통해 문자열을 순회하세요
다음은 구체적인 구현입니다.
#!usr/bin/env python # -*- coding:utf-8 -*- ''''' __AUthor__:沂水寒城 功能:对指定字符串寻找所有回文子序列 ''' def is_huiwen(one_str_list): ''''' 输入一个字符串列表,判断是否为回文序列 ''' if len(one_str_list)==1: return True else: half=len(one_str_list)/2 if len(one_str_list)%2==0: first_list=one_str_list[:half] second_list=one_str_list[half:] else: first_list=one_str_list[:half] second_list=one_str_list[half+1:] if first_list==second_list[::-1]: return True else: return False def get_list_all_sub_list(num_list): ''' 输入一个列表,返回该列表所有的子列表,这里定义的空列表不属于子列表,故:子列表最小长度为1 ''' if len(num_list)==1: return [num_list] sub_list=get_list_all_sub_list(num_list[:-1]) extra=num_list[-1:] temp_list=[] for one in sub_list: temp_list.append(one+extra) return sub_list+temp_list def slice_func(one_str): ''''' ''' result_list=[] for i in range(1,len(one_str)): result_list.append(one_str[:i]) result_list.append(one_str[i:]) result_list+=list(one_str) result_list.append(one_str) return list(set(result_list)) def main_func2(): ''''' 主调用函数 ''' str_list=['abdc','abba'] for one_str in str_list: result_list=slice_func(one_str) print '-----------------------------------------------' for one in result_list: if is_huiwen(list(one)): print one+'是回文序列' def main_func1(): ''''' 主调用函数 ''' str_list=['abdc','abba'] for one_str in str_list: one_str_list=list(one_str) one_all_sub_list=get_list_all_sub_list(one_str_list) print '------------------------------------------------' print one_all_sub_list for one in one_all_sub_list: if is_huiwen(one): print ''.join(one)+'是回文序列' if __name__ == '__main__': print "脚本之家测试结果:" main_func2()
결과는 다음과 같습니다.
관련 권장 사항:
위 내용은 주어진 문자열에 대해 모든 하위 시퀀스가 회문 시퀀스인지 확인하는 Python 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!