博客
关于我
字符串排序
阅读量:439 次
发布时间:2019-03-06

本文共 872 字,大约阅读时间需要 2 分钟。

为了解决问题,我们需要编写一个程序,按照特定规则排序输入字符串中的字符。规则包括:英文字母按顺序排列,同一英文字母的大小写保留输入顺序,非英文字母保持原位。

方法思路

  • 遍历字符串:记录每个字符及其位置。
  • 提取字母字符:将字母字符与其位置一起存储。
  • 自定义排序:根据规则对字母字符进行排序。比较时,先按小写字母顺序,相同字母按输入顺序排列。
  • 重建字符串:将排序后的字母字符放回原位置,非字母字符保持不变。
  • 解决代码

    s = input().strip()chars = list(s)letters = [(c, i) for i, c in enumerate(chars) if c.isalpha()]def compare(a, b):    if a[0].lower() == b[0].lower():        return a[1] - b[1]    return ord(a[0].lower()) - ord(b[0].lower())sorted_letters = sorted(letters, key=compare)result = []for i, c in enumerate(chars):    if c.isalpha():        result.append(sorted_letters[i][0])    else:        result.append(c)print(''.join(result))

    代码解释

  • 读取输入:使用input().strip()读取输入字符串并转换为列表。
  • 记录字符和位置:使用列表推导式遍历字符串,记录每个字符及其索引。
  • 提取字母字符:创建一个列表,存储每个字母字符及其索引。
  • 定义比较函数:比较函数compare首先比较小写字母,如果相同则比较原索引,确保按输入顺序排列。
  • 排序字母字符:使用sorted函数和自定义键进行排序。
  • 重建字符串:遍历原字符串,非字母字符保持原位,字母字符替换为排序后的结果。
  • 输出结果:将结果列表转换为字符串并输出。
  • 转载地址:http://mvjyz.baihongyu.com/

    你可能感兴趣的文章
    Pandas数据处理与分析教程:从基础到实战
    查看>>
    Pandas数据结构之DataFrame常见操作
    查看>>
    pandas整合多份csv文件
    查看>>
    pandas某一列转数组list
    查看>>
    Pandas模块,我觉得掌握这些就够用了!
    查看>>
    Pandas玩转文本处理!
    查看>>
    SpringBoot 整合 Mybatis Plus 实现基本CRUD功能
    查看>>
    pandas的to_sql方法中使用if_exists=‘replace‘
    查看>>
    Springboot ppt转pdf——aspose方式
    查看>>
    pandas读取csv编码utf-8报错
    查看>>
    pandas读取parquet报错
    查看>>
    pandas读取数据用来深度学习
    查看>>
    pandas读取文件时,不去掉前面的0 保留原有的数据格式
    查看>>
    Pandas进阶大神!从0到100你只差这篇文章!
    查看>>
    spring5-介绍Spring框架
    查看>>
    pandas,python - 如何在时间序列中选择特定时间
    查看>>
    Spring 框架之 AOP 原理深度剖析
    查看>>
    Pandas:如何按列元素的组合分组,以指示基于不同列的值的同现?
    查看>>
    Pandas:将一列与数据帧的所有其他列进行比较
    查看>>
    PANDA和GLOB:将文件夹中的所有xlsx文件转换为CSV类型错误:__init__()获得意外的关键字参数‘;xfid‘;
    查看>>