华为面试题:将字符串中字母按照英文字典字母对的顺序重新排列,数字按照从小到大的顺序重新排列

输入:多组字符串
要求:
在这里插入图片描述

代码如下:

# coding=utf-8
import sys

def re_sort(string):
    """
    function:将输入的字符串中对应位的字母按照字母表对应排序,对应的数字按照小到大排序
    :param string: 包含字母和仅有小写字母的字符串
    :return:排序好的字符串
    """
    list_str = list(string)
    alphabet = []
    digit = []
    for t in list_str:
        if t.isdigit():
            digit.append(int(t))
        else:
            alphabet.append(t)
    # 分别将字母和数字排好序
    alphabet = sorted(alphabet)
    digit = sorted(digit)
    new_list_str = []
    # for i in range(length(listStr)):
    for i in list_str:
        if i.isdigit():
            new_list_str.append(str(digit.pop(0)))
        else:
            new_list_str.append(str(alphabet.pop(0)))
    new_string = "".join(new_list_str)
    return new_string


def get_data():
    """从命令行获取输入的数据"""
    # 读取输入的总个数
    print("请输入需要输入的字符串个数:")
    num = int(sys.stdin.readline().strip())
    # str_length = []
    strings_input = []
    for i in range(num):
        # print("请输入第{}字符串长度:".format(i+1))
        # length = int(sys.stdin.readline().strip())     
        # strLength.append(length)
        print("请输入第{}个字符串:".format(i+1))
        single_string = sys.stdin.readline().strip()     # 每次交互时读取数据,默认是字符串,如输入 整数 5,读入的时候 默认是 字符串"5"
        strings_input.append(single_string)
    return strings_input

if __name__ == "__main__":
    arr = get_data()
    sorted_arr = []
    for t in arr:
        sorted_arr.append(re_sort(t))
    print("排序后的数字是:")
    for s in sorted_arr:
        print(s)







  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值