首页 > 其他分享 >面试题-单词分割及排序

面试题-单词分割及排序

时间:2024-10-29 22:46:24浏览次数:1  
标签:__ 面试题 word words demo len 单词 str 排序

题目

Sort a list of words based on number of characters
and ignore the asterisk separator between them

Example Input:
This*is*a***Hello**World***example**to*demo*your****coding*ability“

Example Output:
a is to This demo your Hello World coding ability example

参考实现

import re
from typing import List

SEP = re.compile('\*+')


def split_words(string: str) -> List[str]:
    return re.split(SEP, string)


def sort_words(words: List[str]) -> List[str]:
    if len(words) < 2:
        return words
    p = words[0]
    longer = []
    shorter = []
    same_length = [p]

    for word in words[1:]:
        if len(word) > len(p):
            longer.append(word)
        elif len(word) < len(p):
            shorter.append(word)
        else:
            same_length.append(word)

    return sort_words(shorter) + sorted(same_length, key=lambda word: word) + sort_words(longer)


def solution(string: str) -> str:
    words = split_words(string)
    sorted_words = sort_words(words)
    return ' '.join(sorted_words)


if __name__ == '__main__':
    r = solution('This*is*a***Hello**World***example**to*demo*your****coding*ability')
    print(r)
    assert r == 'a is to This demo your Hello World coding ability example'

标签:__,面试题,word,words,demo,len,单词,str,排序
From: https://www.cnblogs.com/superhin/p/18514676

相关文章

  • python 入门九大排序:1冒泡排序2插入排序3选择排序4快速排序5归并排序6堆排序7计数排序
    1冒泡排序:冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。代码如下:importnumpyasnpdefbubbling(arr):n=len(arr)foriinrange(n-1):forjinrange(n-i-1):ifarr[j......
  • 拓扑排序学习笔记
    图论系列:前言:ぽつり夕立を食らった此処に帰る傘はないんだふたりで嵐を待ったどこへ行こうか探してんだ相关题单:戳我一.图论基本定义其实可以查oiwiki的。1.图图:图是一个二元组\(G=(V(G),E(G))\),其中\(V(G)\)是非空点集,由图的各个顶点组成,\(E(G)\)是各点之间的......
  • 2025秋招LLM大模型多模态面试题(十三)- rag(检索增强生成)技术
    1.基本概念检索增强LLM(RetrievalAugmentedLLM),简单来说,就是给LLM提供外部数据库,对于用户问题(Query),通过一些信息检索(InformationRetrieval,IR)的技术,先从外部数据库中检索出和用户问题相关的信息,然后让LLM结合这些相关信息来生成结果。下图是一个检......
  • Java面试题之HashMap
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!说说Hashtable与HashMap的区别?HashMap中的key我们可以使用任何类作为key吗?HashMap的长度为什么是2的N次方呢?HashMap与ConcurrentHashMap的异同?红黑树有哪几个特征?似乎有点模糊了,那就大概看一下面试......
  • 12个数排序
    12个数进行排序后输出'''verilogmodulenew_12#(parameterDATA_WIDTH=8,parameterDATA_NUM=12)(inputwire[DATA_WIDTH-1:0]data_in[DATA_NUM-1:0],outputwire[DATA_WIDTH-1:0]data_out[DATA_NUM-1:0]);genvari;reg[DATA_NUM-......
  • Java常见List面试题
    前言本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!获取一个类Class对象的方式有哪些?ArrayList和LinkedList的区别有哪些?用过ArrayList吗?说一下它有什么特点?有数组了为什么还要搞个ArrayList呢?说说什么是fail-fast?似乎有点模糊了,那就大概看一下Java基础面试......
  • 用正则表达式获取json字段排序
    varReg01=newRegex($"\"fd9e\"\\s*?:\\s*?(\".*?)\"");varReg02=newRegex($"\"fe1e\"\\s*?:\\s*?(\".*?)\"");dtoList=dtoList.Select(a=>new{ dto=a,H=getMatchReg01(Reg02......
  • 算法与数据结构——计数排序
    计数排序计数排序(countingsort)通过统计元素数量来实现排序,通常应用于整数数组。简单实现给定一个长度为n的数组nums,其中的元素都是“非负整数”,计数排序的整体流程如下:遍历数组,找出其中最大的数组,记为m,然后创建一个长度为m+1的辅助数组counter。借助counter统计nums中各......
  • antdesign vue 步骤条a-step按审核人员节点排序显示逻辑
    一、需求内容目前审核人员角色有:学术、法务、售后,串行执行审核流程。审核流程:发起/修改审核-》审核节点审核节点规则:学术-》法务-》售后,每个节点均可以审核或修改。审核状态:发起、修改、待审核、已审核。因此前端根据节点规则来展示审核步骤给用户。二......
  • 银行测试面试题大揭秘,助你一臂之力!
    在金融行业,尤其是银行领域,测试工作的重要性不言而喻。作为测试人员,想在银行测试的面试中脱颖而出,了解行业特定的面试题尤为关键。今天,我们就来揭开银行测试面试题的神秘面纱,助你轻松应对挑战。银行测试面试中,面试官通常会问哪些问题?这些问题又反映了哪些知识和技能?本文将为你......