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

Google的一道经典面试题 - 767. 重构字符串

文章目录

  • Google的一道经典面试题 - 767. 重构字符串
    • 767. 重构字符串
    • 1054. 距离相等的条形码
  • 结论

Google的一道经典面试题 - 767. 重构字符串

767. 重构字符串

题目链接:767. 重构字符串
题目大意:给定一个字符串 s ,检查是否能重新排布其中的字母,使得两相邻的字符不同。
返回 s 的任意可能的重新排列。若不可行,返回空字符串 “” 。

注意:(1)1 <= s.length <= 500;(2)s 只包含小写字母。

示例:

输入: s = "aab"
输出: "aba"输入: s = "aaab"
输出: ""

参考代码:

class Solution:def reorganizeString(self, s: str) -> str:cnt = Counter(s)st = sorted(cnt,key=lambda k:0-cnt[k])if cnt[st[0]] > (len(s)+1)//2: return ""res = []for i in st:res += [i]*cnt[i]ans = [None for _ in range(len(res))]ans[::2] = res[:len(ans[::2])]ans[1::2] = res[len(ans[::2]):]return ''.join(ans)
  • 时间复杂度:O(n+∣Σ∣)O(n+|\Sigma|)O(n+∣Σ∣),其中 nnn 是字符串的长度,Σ\SigmaΣ 是字符集,在本题中字符集为所有小写字母,∣Σ∣=26|\Sigma|=26∣Σ∣=26。遍历字符串并统计每个字母的出现次数,时间复杂度是 O(n)O(n)O(n)。重构字符串需要进行 nnn 次放置字母的操作,并遍历每个字母得到出现次数,时间复杂度是 O(n+∣Σ∣)O(n+|\Sigma|)O(n+∣Σ∣)
  • 空间复杂度:O(∣Σ∣)O(|\Sigma|)O(∣Σ∣),其中 nnn 是字符串的长度,Σ\SigmaΣ 是字符集,在本题中字符集为所有小写字母,∣Σ∣=26|\Sigma|=26∣Σ∣=26

1054. 距离相等的条形码

相似题型:1054. 距离相等的条形码
题目大意:在一个仓库里,有一排条形码,其中第 i 个条形码为 barcodes[i]。
请你重新排列这些条形码,使其中任意两个相邻的条形码不能相等。 你可以返回任何满足该要求的答案,此题保证存在答案。

注意:(1)1 <= barcodes.length <= 10000;(2)1 <= barcodes[i] <= 10000。

示例:

输入:barcodes = [1,1,1,2,2,2]
输出:[2,1,2,1,2,1]输入:barcodes = [1,1,1,1,2,2,3,3]
输出:[1,3,1,3,2,1,2,1]

参考代码:

class Solution:def rearrangeBarcodes(self, barcodes: List[int]) -> List[int]:cnt = Counter(barcodes)st = sorted(cnt,key=lambda k:0-cnt[k])res = []for i in st:res += [i]*cnt[i]ans = [None for _ in range(len(res))]ans[::2] = res[:len(ans[::2])]ans[1::2] = res[len(ans[::2]):]return ans
  • 复杂度分析和上面差不多,不过Σ=10000\Sigma=10000Σ=10000

结论

  • 排序这一块的题目还是比较难的,关于 .sort()和sorted()函数的应用非常广泛且灵活多变,很有意思的,加油吧,努力学习。

相关文章:

Google的一道经典面试题 - 767. 重构字符串

文章目录Google的一道经典面试题 - 767. 重构字符串767. 重构字符串1054. 距离相等的条形码结论Google的一道经典面试题 - 767. 重构字符串 767. 重构字符串 题目链接&#xff1a;767. 重构字符串 题目大意&#xff1a;给定一个字符串 s &#xff0c;检查是否能重新排布其中的…...

E8-公共选择框相关的表

起因 昨天同事和我说&#xff0c;要在一个表单里加一组可选项。于是我去了公共选择框维护。这时候才发了这么个问题&#xff0c;前几天我在本机的测试环境里做的流程&#xff0c;导入到我们的生产环境里&#xff0c;表单里所用到的共公选择框的选项都在&#xff0c;在表单里是…...

再学C语言41:变长数组(VLA)

处理二维数组的函数&#xff1a;数组的行可以在函数调用时传递&#xff0c;但是数组的列只能被预置在函数内部 示例代码&#xff1a; #define COLS 4 int sum(int arr[][COLS], int rows) {int r;int c;int temp 0;for(r 0; r < rows; r){for(c 0; c < COLS; c){tem…...

物联网WEB大屏数据可视化

最近了解WEB大屏显示。一般像嵌入式这类的&#xff0c;MQTT协议会走的多一些&#xff0c;走订阅和发布的策略&#xff0c;网上走了一圈之后&#xff0c;目前有几个实现方案。这里对比一下几个物联网协议&#xff0c;相对而言MQTT更合适物联网&#xff0c;其它几个协议不是干这个…...

新:DlhSoft Gantt Chart for WPF Crack

用于 Silverlight/WPF 4.3.48 的 DlhSoft 甘特图灯光库 改进甘特图、网络图和 PERT 图表组件的 PERT 关键路径算法。2023 年 3 月 2 日 - 17:09新版本特征 改进了甘特图、网络图和 PERT 图表组件的 PERT 关键路径算法。Silverlight/WPF 标准版的 DlhSoft 甘特图灯光库 DlhSoft …...

C++基础(一)—— C++概述、C++对C的扩展(作用域、struct类型、引用、内联函数、函数默认参数、函数占位参数、函数重载)

1. C概述1.1 c简介“c”中的来自于c语言中的递增运算符&#xff0c;该运算符将变量加1。c起初也叫”c withclsss”.通过名称表明&#xff0c;c是对C的扩展&#xff0c;因此c是c语言的超集&#xff0c;这意味着任何有效的c程序都是有效的c程序。c程序可以使用已有的c程序库。为什…...

Rust学习总结之if,while,loop,for使用

目录 一&#xff1a;if的使用 二&#xff1a;while的使用 三&#xff1a;loop的使用 四&#xff1a;for的使用 本文总结的四种语句&#xff08;if&#xff0c;while&#xff0c;loop&#xff0c;for&#xff09;除了loop&#xff0c;其他的三个在C语言或者Python中都是常见…...

Java知识复习(十一)RabbitMQ

1、RabbitMQ简介 RabbitMQ 是采用 Erlang 语言实现 AMQP(Advanced Message Queuing Protocol&#xff0c;高级消息队列协议&#xff09;的消息中间件 2、RabbitMQ核心概念 RabbitMQ 整体上是一个生产者与消费者模型&#xff0c;主要负责接收、存储和转发消息 3、Producer和…...

thinkphp图片压缩类

<?php namespace app\lib; /** * 图片压缩类&#xff1a;通过缩放来压缩。 * 如果要保持源图比例&#xff0c;把参数$percent保持为1即可。 * 即使原比例压缩&#xff0c;也可大幅度缩小。数码相机4M图片。也可以缩为700KB左右。如果缩小比例&#xff0c;则体积会更小。…...

如何将图数据库应用于电影智能推荐

导读 电影&#xff0c;是一种结合视觉与听觉的现代艺术。如今&#xff0c;电影已不单是人们娱乐消遣的生活方式&#xff0c;也逐渐成为国家文化软实力的重要标志之一。据有关数据统计&#xff0c;2021年中国影视行业市场规模达2349亿元&#xff0c;同比增长23.2%&#xff0c;预…...

CSS实现动画效果的菜单收起展开图标,html实现动画效果的箭头

效果 实现代码 此处JS代码引入了jquery <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>.menu-icon{position: absolute;left: 20%;top: 30%;transition: all .3s;}.menu-icon:before, .menu…...

大数据平台小结

搭建大数据平台启动流程1、启动Nginx服务&#xff08;在bdp-web-mysql服务中&#xff09;cd /usr/local/nginx/# 启动Nginx ./sbin/nginx# 查看端口是否存在 netstat -tunlp|grep 200012、启动zookeeper&#xff08;在bdp-executor-realtime123&#xff09;cd /app/bdp/apache-…...

力扣-139单词拆分

力扣-139单词拆分 1、题目 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。请你判断是否可以利用字典中出现的单词拼接出 s 。 注意&#xff1a;不要求字典中出现的单词全部都使用&#xff0c;并且字典中的单词可以重复使用。 示例 1&#xff1a; 输入: s "…...

图机器学习-图神经网络

图神经网络 前面讲了图机器学习的一些传统方法&#xff0c;现在正式进入到课程的核心部分&#xff1a;图神经网络。 Design of GNN 那么图神经网络和我们之前接触的一些深度神经网络有什么不同呢&#xff1f; 对于别的类型的神经网络&#xff0c;往往我们都是处理一些类似网…...

配置Airbyte资源限制

资源限制有三种不同的级别配置&#xff1a;Instance-wide - 应用到Airbyte实例创建的Sync Job的所有容器上。Connector-specific - 应用到Airbyte实例创建的Sync Job的所有指定类型连接器的容器上Connection-specific - 应用到Airbyte实例创建的Sync Job的所有指定管道的容器上…...

python实现PCA降维画分类散点图并标出95%的置信区间

此代码以数据集鸢尾花为例&#xff0c;对其使用PCA降维后&#xff0c;绘制了三个类别的样本点和对应的置信圆&#xff08;即椭圆&#xff09;。先放效果图。 下面是完整代码&#xff1a; from matplotlib.patches import Ellipsedef plot_point_cov(points, nstd3, axNone, **…...

Mysql高级之索引结构详解

Mysql的索引详解1.索引定义2.索引结构2.1数据结构分析2.1.1熟知的数据结构2.1.2分析为什么这么多的数据结构不全适用于索引结构2.2Hash结构2.3B tree结构3.索引分类3.1聚集索引&#xff08;聚簇索引&#xff09;3.2非聚集索引&#xff08;稀疏索引&#xff09;3.3联合索引3.4主…...

【线程-J.U.C】

Lock J.U.C最核心组件&#xff0c;Lock接口出现之前&#xff0c;多线程的并发安全只能由synchronized处理&#xff0c;但java5之后&#xff0c;Lock的出现可以解决synchronized的短板&#xff0c;更加灵活。 Lock本质上是一个接口&#xff0c;定义了释放锁&#xff08;unlock&…...

docker布署spring boot jar包项目

目录docker 安装创建目录制作镜像启动容器查看日志docker 安装 Docker安装、详解与部署 创建目录 服务器中创建一个目录&#xff0c;存放项目jar包和Dockerfile 文件 mkdir /目录位置创建目录后创建Dockerfile文件&#xff0c;上传jar包到同一目录下 创建dockerfile vim Doc…...

极简Vue3教程--Pinia状态管理

Pinia&#xff08;发音为/piːnjʌ/&#xff0c;如英语中的“peenya”&#xff09;是最接近pia&#xff08;西班牙语中的菠萝&#xff09;的词&#xff1b;Pinia开始于大概2019年&#xff0c;最初是作为一个实验为Vue重新设计状态管理&#xff0c;让它用起来像组合式API&#x…...

原来Ilya还有70亿美元OpenAI股权

鹭羽 发自 凹非寺量子位 | 公众号 QbitAI马斯克 VS 奥特曼的世纪庭审&#xff0c;也太劲爆了——感觉自己像是瓜田里的猹&#xff0c;一瓜未平一瓜又起。吃不过来&#xff0c;根本吃不过来……这不&#xff0c;就在刚刚&#xff0c;OpenAI的造富神话被「一不小心」炸了出来。Op…...

SoC设计中虚拟原型技术与TLM建模实践

1. 虚拟原型技术概述在SoC设计领域&#xff0c;虚拟原型技术(Virtual Prototyping)已经成为现代芯片开发流程中不可或缺的关键环节。这项技术的核心价值在于&#xff0c;它能够在RTL级硬件设计完成之前&#xff0c;就为软件团队提供一个可执行的硬件抽象模型。作为一名经历过多…...

cPanel三连漏洞CVE-2026-29201/29202/29203深度解析:150万服务器面临全面接管危机

一、事件引言&#xff1a;2026年主机行业最大安全地震 2026年5月8日&#xff0c;全球市场份额第一的服务器管理面板cPanel & WHM 发布紧急安全公告&#xff0c;一次性披露三个高危安全漏洞&#xff08;CVE-2026-29201/29202/29203&#xff09;。这组被安全界称为"cPa…...

物联网超低功耗设计:从睡眠优先到能量自治的十年续航之道

1. 项目概述&#xff1a;让物联网节点运行数十年的设计哲学如果你正在部署一个大规模的物联网网络&#xff0c;无论是智慧城市的数千个路灯传感器&#xff0c;还是遍布数公里农田的环境监测节点&#xff0c;最让你头疼的问题恐怕不是通信协议&#xff0c;也不是数据处理&#x…...

手把手教你用Intel System Debugger和DCI OOB盒子抓取开机日志(附CSME解码文件获取指南)

硬件调试实战&#xff1a;Intel System Debugger与DCI OOB盒子的替代方案指南 当主板开机卡死在LOGO界面或出现花屏时&#xff0c;传统调试工具链的突然失效往往让工程师陷入困境。我曾亲眼见过一位同事因为误改GDK7开发板的BIOS设置&#xff0c;导致价值上万的DCI-USB3调试线缆…...

答辩 PPT 还在熬夜手搓?Paperxie AI 一键救场,毕业季不熬无用夜

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPThttps://www.paperxie.cn/ppt/createhttps://www.paperxie.cn/ppt/create 当论文终稿尘埃落定&#xff0c;本以为能松一口气&#xff0c;却发现答辩 PPT 成了压垮心态的最后一根稻草。对着空白页面不…...

用Arduino UNO和L298N驱动板,手把手教你让麦轮小车原地画个‘8’字(附完整代码)

用Arduino UNO和L298N驱动板实现麦轮小车8字轨迹编程实战 想让你的麦克纳姆轮小车跳出机械舞步吗&#xff1f;一个完美的"8"字轨迹不仅能展示麦轮的全向移动特性&#xff0c;更是检验运动控制算法的绝佳试金石。作为已经完成基础搭建的Arduino玩家&#xff0c;这个项…...

ARM Fast Models MTI插件开发与性能优化实战

1. Fast Models中的Model Trace Interface架构解析在嵌入式系统仿真领域&#xff0c;ARM Fast Models提供的Model Trace Interface&#xff08;MTI&#xff09;是一套高效的仿真数据采集框架。作为一位长期从事嵌入式调试工具开发的工程师&#xff0c;我发现MTI的独特设计使其成…...

Raycast扩展vscode-control:用全局启动器遥控VS Code提升开发效率

1. 项目概述&#xff1a;一个为Raycast打造的VS Code遥控器 如果你和我一样&#xff0c;每天大部分时间都泡在代码编辑器里&#xff0c;那么你一定对频繁在编辑器、终端、浏览器和启动器之间切换感到厌烦。尤其是当你需要快速执行一个格式化操作、运行一个NPM脚本&#xff0c;…...

深度清理工具openclaw-uninstaller:跨平台卸载与Node.js生态清理指南

1. 项目概述&#xff1a;为什么我们需要一个专门的卸载工具&#xff1f;在软件开发和日常使用中&#xff0c;卸载一个应用程序听起来像是一个简单的“删除”操作&#xff0c;但实际情况往往复杂得多。尤其是那些功能强大、深度集成到系统中的工具&#xff0c;比如涉及3D重建、A…...