Python实现字符串按Z字形排列后按行读取

Owen
Owen
发布时间:2026-10-13| 6人浏览过
原创

本文介绍一种利用Python将字符串按指定行数进行Z字形(或之字形)列分配,随后按行拼接输出的实现方法。通过构建二维矩阵并填充空白占位符,清晰展示字符在行与列间的分布逻辑,提供完整代码及多组测试用例,帮助开发者理解字符串重排算法的核心思路。

本文详细介绍如何使用Python实现将字符串按指定行数进行列分配,随后按行读取输出的功能。该方案旨在为相关应用提供参考与实现思路。

问题描述:

给定一个输入字符串和一个整数参数(代表行数),需要将字符串字符按照特定的列存储规则进行排列,最终按行顺序拼接并输出结果。例如:

输入字符串为“TNGDWXAZQSCVBK”,行数为3。 预期输出为:“TWQBNDXZSVKGAC”

在中间转换过程中,字符会形成如下视觉分布:

T W Q K N D X Z S V B G A C

若将其转化为矩阵形式,结构会更加清晰:

T 0 W 0 Q 0 B N D X Z S V K G 0 A 0 C 0 0

上述矩阵中的“0”代表空白填充位,用于保持矩阵结构的完整性。以下是具体的代码实现过程:

#!usr/bin/env python
#encoding:utf-8
'''''
__Author__:沂水寒城
功能:zigzag_pattern
T  W  Q  K
N D X Z S V B
G  A  C
convert("TNGDWXAZQSCVBK", 3) should return "TWQBNDXZSVKGAC".
'''
def convert_test(one_str,num):
  '''''
  '''
  mod=len(one_str)%(num+1)
  if mod==0:
    cols=(len(one_str)/(num+1))*2
  else:
    cols=(len(one_str)/(num+1))*2+1
  rows=num
  #print 'rows, cols', rows, cols
  matrix=[]
  for i in range(rows):
    matrix.append([0]*cols)
  one_str_list=list(one_str)
  for j in range(cols):
    if j%2==0:
      for i in range(rows):
        if len(one_str_list):
          matrix[i][j]=one_str_list.pop(0)
    else:
      matrix[1][j]=one_str_list.pop(0)
  #print matrix
  # for one in matrix:
  #   one_list=[str(onec) for onec in one]
  #   print ' '.join(one_list)
  res=''
  for one_list in matrix:
    one_list=[str(one) for one in one_list]
    res+=''.join(one_list)
  return ''.join(res.split('0'))
if __name__ == '__main__':
  print convert_test("TNGDWXAZQSCVBK", 3)
  print convert_test("PAYPALISHIRING", 2)
  print convert_test("PAYPALISHIRING", 4)

代码运行结果如下:

TWQBNDXZSVKGAC PPIINAYALSHRIG PLRAAIIIYSNPHG [Finished in 0.3s]

如需进一步掌握Python相关知识,可参考本站系列教程:《Python字符串操作技巧汇总》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python入门与进阶经典教程》以及《Python文件与目录操作技巧汇总》。

希望上述内容能对您的Python编程实践提供有益帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。