博客
关于我
字符串排序
阅读量: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/

    你可能感兴趣的文章
    Nodejs模块、自定义模块、CommonJs的概念和使用
    查看>>
    nodejs生成多层目录和生成文件的通用方法
    查看>>
    nodejs端口被占用原因及解决方案
    查看>>
    Nodejs简介以及Windows上安装Nodejs
    查看>>
    nodejs系列之express
    查看>>
    nodejs系列之Koa2
    查看>>
    Nodejs连接mysql
    查看>>
    nodejs连接mysql
    查看>>
    NodeJs连接Oracle数据库
    查看>>
    nodejs配置express服务器,运行自动打开浏览器
    查看>>
    NodeMCU教程 http请求获取Json中文乱码解决方案
    查看>>
    Nodemon 深入解析与使用
    查看>>
    NodeSession:高效且灵活的Node.js会话管理工具
    查看>>
    node~ http缓存
    查看>>
    node不是内部命令时配置node环境变量
    查看>>
    node中fs模块之文件操作
    查看>>
    Node中同步与异步的方式读取文件
    查看>>
    Node中的Http模块和Url模块的使用
    查看>>
    Node中自启动工具supervisor的使用
    查看>>
    Node入门之创建第一个HelloNode
    查看>>