>  기사  >  백엔드 개발  >  주어진 문자열에 대해 모든 하위 시퀀스가 ​​회문 시퀀스인지 확인하는 Python 방법

주어진 문자열에 대해 모든 하위 시퀀스가 ​​회문 시퀀스인지 확인하는 Python 방법

不言
不言원래의
2018-04-21 15:19:302060검색

이 문서에서는 주어진 문자열에 대해 모든 하위 시퀀스가 ​​회문 시퀀스인지 여부를 결정하는 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()

결과는 다음과 같습니다.

관련 권장 사항:

변환 방법 파이썬 문자열을 2차원 배열로

위 내용은 주어진 문자열에 대해 모든 하위 시퀀스가 ​​회문 시퀀스인지 확인하는 Python 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.