当前位置: 首页 > news >正文

【华为OD机考】华为OD笔试真题解析(10)--字符串重新排序

题目描述

给定一个字符串s,包含以空格分隔的若干个单词,请对s进行如下处理后输出:

  1. 单词内部调整:对每个单词字母重新按字典序排序;
  2. 单词间顺序调整:
    • 统计每个单词出现的次数,并按次数降序排列
    • 次数相同时,按单词长度升序排列
    • 次数和单词长度均相同时,按字典序升序排列

请输出处理后的字符串,每个单词以一个空格分隔。

输入描述

一行字符串,每个字符取值范围:[a-zA-Z0-9]以及空格,字符串长度范围:[1, 1000]。

输出描述

重新排序后的字符串,每个单词间隔1个空格,且首尾无空格。

示例描述

示例一

输入:

This is an apple

输出:

an is This aelpp

示例二

输入:

My sister is in the house not in the yard

输出:

in in eht eht My is not adry ehosu eirsst

解题思路

  1. 用空格分隔原始字符串,并用字典统计词频。
  2. 使用sorted函数按次数降序、单词长度升序、按字典序升序排列。
  3. 根据排序之后的字典,转换成字符串列表,注意单词需要按照词频进行重复记录。
  4. join重新转成字符串并返回。

解题代码

from collections import defaultdict


def solve_method(string):
    words = string.split()
    word_freqs = defaultdict(int)
    for word in words:
        rearrange_word = "".join(sorted(word))
        word_freqs[rearrange_word] += 1

    sorted_freqs = sorted(word_freqs.items(),
                          key=lambda x: (-x[1], len(x[0]), x[0]))

    result = []
    for (word, freqs) in sorted_freqs:
        result.extend([word] * freqs)

    result = " ".join(result)
    return result

if __name__ == '__main__':
    assert solve_method("This is an apple") == "an is This aelpp"
    assert solve_method("My sister is in the house not in the yard") \
           == "in in eht eht My is not adry ehosu eirsst"

相关文章:

  • 使用 Python 爬虫和 FFmpeg 爬取 B 站高清视频
  • 【Python】错误异常
  • 【深度学习】计算机视觉(CV)-目标检测-DETR(DEtection TRansformer)—— 基于 Transformer 的端到端目标检测
  • DAY04 Object、Date类、DateFormat类、Calendar类、Math类、System类
  • 什么是计算机总线?
  • 【大模型】DeepSeek 高级提示词技巧使用详解
  • Android Studio报错:Could not get unknown property ‘kotlin_version‘
  • Kubernetes控制平面组件:etcd高可用集群搭建
  • c语言(初阶函数)完结
  • 函数防抖和节流
  • AI 语言模型发展史:统计方法、RNN 与 Transformer 的技术演进
  • Spring Boot01(注解、)---java八股
  • 001-监控你的文件-FSWatch-C++开源库108杰
  • Typora导出word文件详细安装教程
  • 使用 Dify + DeepSeek 打造自己的本地知识库问答
  • 框架ThinkPHP(小迪网络安全笔记~
  • 计算机组成原理—— 外围设备(十三)
  • 配置Open-R1,评测第三方蒸馏模型的性能2
  • 2025百度快排技术分析:模拟点击与发包算法的背后原理
  • 一个简单的ubuntu/开发板初始化脚本
  • 宇树科技王兴兴:第一桶金来自上海,欢迎上海的年轻人加入
  • 巴基斯坦军方:印度导弹袭击巴首都附近空军基地
  • 工行回应两售出金条发现疑似杂质:情况不属实,疑似杂质应为金条售出后的外部附着物
  • 中国一重集团有限公司副总经理陆文俊被查
  • 深圳两家会所涉卖淫嫖娼各被罚7万元逾期未缴,警方发催告书
  • 印度杰纳布河上游两座水电站均已重新开闸