算法笔记-lc-面试题 01.02. 判定是否互为字符重排(简单)

pandas sort_values深度解析:排序不是点一下的事 排序是数据处理中影响语义正确性的关键操作,其本质是数据结构的重构而非简单显示调整。理解pandas sort_values的底层原理(如内存复制机制、NaN默认位置、稳定性差异)直接关系到聚合、分组、连接等后续计算的准确性。在真实场景中,字符串大小写敏感、中文拼音排序、多列字典序、时序精度控制等需求,均需结合key参数、na_position、kind算法等精细调控。尤其在金融、医疗等强一致性领域,排序错误可能引发累计统计偏差、临床报告失真等严重后果。本文聚焦pandas sort_values的核心机制与 阅读详情

@[TOC](算法笔记-lc-面试题 01.02. 判定是否互为字符重排(简单))

题目

题干

给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。

示例

示例 1:

输入: s1 = “abc”, s2 = “bca”
输出: true
示例 2:

输入: s1 = “abc”, s2 = “bad”
输出: false

说明:

0 <= len(s1) <= 100
0 <= len(s2) <= 100

题解

方法一:排序

字符串 s1和 s2
​互为字符重排等价于「两个字符串排序后相等」。因此我们可以对字符串 s1和 s2分别排序,看排序后的字符串是否相等即可判断。此外,如果 s 1和s2 的长度不同,s2必然不是 s1的异位词。

class Solution {
    public boolean CheckPermutation(String s1, String s2) {
        if (s1.length() != s2.length()) {
            return false;
        }
        char[] str1 = s1.toCharArray();
        char[] str2 = s2.toCharArray();
        Arrays.sort(str1);
        Arrays.sort(str2);
        return Arrays.equals(str1, str2);
    }
}

复杂度分析

时间复杂度:O(nlogn),其中 n 为 s1的长度。排序的时间复杂度为 O(nlogn),比较两个字符串是否相等时间复杂度为 O(n),因此总体时间复杂度为 O(nlogn+n)=O(nlogn)。

空间复杂度:O(logn)。排序需要 O(logn) 的空间复杂度。注意,在某些语言(比如 Java & JavaScript)中字符串是不可变的,因此我们需要额外的 O(n) 的空间来拷贝字符串。但是我们忽略这一复杂度分析,因为:

这依赖于语言的细节;
这取决于函数的设计方式,例如,可以将函数参数类型更改为 char[]。

方法二:哈希表

从另一个角度考虑,字符串 s1和 s2互为字符重排等价于「两个字符串中字符出现的种类和次数均相等」。由于字符串只包含 128 种不同的字符,因此我们可以维护一个长度为 128 的频次数组 \textit{table}table,先遍历记录字符串 s 1中字符出现的频次,然后遍历字符串 s2,减去 \textit{table}table 中对应的频次,如果出现table[i]<0,则说明 s2 包含一个不在s1中的额外字符,返回 false 即可。

class Solution {
    public boolean CheckPermutation(String s1, String s2) {
        if (s1.length() != s2.length()) {
            return false;
        }
        int[] table = new int[128];
        for (int i = 0; i < s1.length(); i++) {
            table[s1.charAt(i)]++;
        }
        for (int i = 0; i < s2.length(); i++) {
            table[s2.charAt(i)]--;
            if (table[s2.charAt(i)] < 0) {
                return false;
            }
        }
        return true;
    }
}

复杂度分析

时间复杂度:O(n),其中 n 为 s1的长度。

空间复杂度:O(S),其中 S 为字符集大小,此处 S=128。

AI工程化实战通讯:百期RAG生产级落地指南 在AI从概念走向产线的关键阶段,'AI newsletter'已超越信息简报,演变为承载可复现知识晶体的工程交付载体。其核心原理在于通过真实业务压力驱动的问题域螺旋收敛,将前沿技术(如RAG、embedding优化、query重写)压缩为带审计追踪、参数可验证、失败可归因的原子化模块。这种非 hype 导向的知识沉淀,直接支撑法律、金融、政务等强合规场景下的LLM系统稳定上线——例如本地化RAG冷启动中的语义断裂修复、嵌入漂移校准与上下文污染规避。它代表了一种新型技术传播范式:不教‘如何惊艳’,而教‘如何不 阅读详情

相关推荐

AI学习者生存地图:面向中级实践者的协作式技术简报

在人工智能学习路径中,‘能跑通’不等于‘可复现’,‘懂原理’不等于‘会诊断’。本文聚焦AI工程实践中最常卡点的工具链断点与协作瓶颈,解析如何通过问题驱动的内容设计、环境指纹固化、原子化验证流程和最小可行贡献(MVC)机制,构建可持续演进的学习-实践-反馈闭环。特别围绕Ollama本地部署、LanceDB向量检索、RAG三阶段协同调试等真实场景,揭示从单机复现到社区共建的关键跃迁逻辑——这不仅是技术简报的升级,更是面向中级AI实践者的协作操作系统。

weixin_30251829的博客 375

【优选算法】哈希表:两数之和,判定是否互为字符重排,存在重复,字母异位词分组

本文整理了5道LeetCode哈希表相关题目:1.两数之和(通过哈希表快速查找补数);2.判定字符重排(统计字符频率是否一致);3.存在重复元素(使用哈希表检测重复);4.存在重复元素II(检查k距离内重复);5.字母异位词分组(按字符排序作为哈希键)。这些题目展示了哈希表在快速查找和统计方面的优势,是解决数组/字符串类问题的有效工具。

记录了从0学习Java技术栈的日常 81

指令微调如何影响大模型置信度与词汇多样性?诊断与优化策略

在自然语言处理与大型语言模型应用中,置信度与词汇多样性是衡量模型输出质量的两个关键维度。置信度反映了模型对生成内容的确定性程度,而词汇多样性则决定了表达的丰富性与灵活性。从技术原理上看,模型通过概率分布生成文本,其置信度通常由输出概率值体现,词汇多样性则受训练数据分布与解码策略影响。这两者的平衡对模型的实际应用价值至关重要:良好的置信度校准能提升答案的可信度,减少“幻觉”;丰富的词汇多样性则能增强文本的创造性与适应性,避免回答模板化。在指令微调这一关键环节中,模型在适应特定任务与安全规范的同时,常会无意中改

weixin_30522183的博客 357

[Lc10_hash] 总结 | 两数之和 | 字符重排 | 存在重复元素 i ii | 字母异位词分组

hash

No Game No Life 968

gcc编译C语言全链路拆解:从预处理到链接的4个关键阶段

C语言编译本质是将高级代码转换为机器可执行指令的过程,其核心在于理解编译器工作原理与工具链协同机制。gcc并非单一程序,而是调度预处理、编译、汇编和链接四个阶段的前端工具,每个阶段对应不同中间文件(.i/.s/.o)和系统级依赖。掌握这些阶段不仅有助于排查‘stdio.h找不到’‘undefined reference’等高频报错,更能支撑跨平台开发(如Windows下w64devkit的UTF-8兼容)、工程化构建(Makefile与头文件路径管理)及调试优化(gdb/valgrind/AddressSa

weixin_30378623的博客 379

嵌入式安全启动框架:零信任启动链与动态策略加载实践

嵌入式安全启动是保障MCU设备可信运行的基础机制,其核心在于构建从硬件复位到应用执行的完整信任链。传统Secure Boot受限于芯片ROM能力、启动延迟与坏块容忍度,难以满足工业级实时性与可靠性要求。本文聚焦‘分段式信任锚点’设计原理,融合物理扇区镜像校验、时间戳可信链与运行时内存指纹三大技术手段,实现启动过程的可验证、可回滚、可自愈。关键技术价值体现在资源极致压缩(<64KB Flash)、跨平台适配(STM32/NXP/RISC-V)及硬件协同故障检测。典型应用场景包括工业物联网终端、高可靠边缘控制器

diaozhiwa5526的博客 341

【贪心算法】整数替换,俄罗斯套娃信封问题,可被三整除的最大和,距离相等的条形码,重构字符串

本文介绍了四道LeetCode题目的解题思路和代码实现: 整数替换(LC 397):给出两种解法,递归+记忆化搜索(利用备忘录记录操作次数)和贪心算法(通过二进制分析奇偶性优化操作)。 俄罗斯套娃信封问题(LC 354):转化为最长递增子序列问题,动态规划解法可能超时,推荐贪心+二分法,需注意排序规则(左端点升序,右端点降序)。 可被三整除的最大和(LC 1262):计算总和后,根据余数情况删除最小数或两个次小数,确保和能被3整除。 距离相等的条形码(LC 1054)(未提供完整解析)。 每道题均附代码示例

记录了从0学习Java技术栈的日常 297

Pandas多维聚合实战:银行风控中的生产级聚合设计

聚合操作是数据分析的基础能力,其本质是将原始观测数据按业务维度归纳为统计摘要。在金融风控等高可靠性场景中,聚合不仅涉及SUM、AVG等基础统计原理,更需统筹多维分组、滚动/扩展窗口、跨列逻辑依赖与上下文一致性等工程约束。技术价值在于保障特征计算的可复现性、低延迟与业务语义准确——例如滚动7天标准差必须对齐交易时间边界,多维unstack需规避索引重复导致的NaN扩散。典型应用场景包括信用卡异常消费识别、商户风险评分、实时反欺诈规则引擎及经营仪表盘构建。本文聚焦银行零售信贷与支付清算领域的真实产线实践,覆盖P

weixin_34384557的博客 414

力扣刷题精选

Hello World 梦开始的地方~

VaccyZhu的博客 1288

【信息科学与工程学】【控制科学】第十二篇 微型计算机控制技术01

更精确的经典模型:I1在第5周期WB结束,I2最早可在第6周期进入EX,但I2在ID阶段就需要R1,因此I2的ID需在第6周期,而I1的WB在第5周期,所以I2的ID可以紧接在第6周期,但中间仍有一个stall(因为I1的EX结果要等到MEM之后才能转发给ID?有优先级继承后,Task_L被提升优先级,不会被Task_M抢占,阻塞时间缩短为Task_L剩余执行时间(9ms),仍可能超过10ms,但可通过调整任务周期或使用中断处理缓解。电感L=10μH,输出电容C=100μF,ESR=5mΩ。

weixin_49199313的博客 8624

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 305

牛客面试必刷101代码总结【python】

牛客面试题必刷101代码总结

Anthony_hit的博客 2326

【信息科学与工程学】【通信工程】第四篇 通信网络的数学架构10 通信网络核心数学方程式01

卸载:Toffload​=L/R+C/fserver​+Tback​, Eoffload​=Ptx​⋅(L/R)。下层:在切片 s内,为用户 u分配资源,最大化对数效用函数 ∑u​log(ru​), 其中 ru​=∑n∈NRBs​​au,n​⋅SEu,n​, au,n​∈{0,1}表示分配。:在时隙 t, 能量到达 Et​, 电池能量状态 Bt​更新:Bt+1​=min(Bt​−pt​+Et​,Bmax​)。:基站发送:x=α1​P​s1​+α2​P​s2​, α1​+α2​=1, α1​>α2​。

weixin_49199313的博客 370

技术人格化系统:从终端提示符到PCB丝印的全链路工程实践

技术人格化并非个人 branding 的视觉装饰,而是一种将工程师认知、代码逻辑与物理世界强耦合的工程方法论。其核心在于以可执行性(如裸机代码段定义)、可验证性(示波器/频谱仪可观测)和可迁移性(跨MCU平台零修改复用)为三大支柱,实现抽象技术理念向确定性硬件行为的转化。它植根于嵌入式开发基础能力——C语言、寄存器操作、链接脚本、时序分析与EMC设计,并天然融合低功耗优化、固件安全启动、产线自动化校验等工业级需求。本文聚焦‘LeoXingNothing Impossible!’这一真实落地案例,详解如何让一

SailingAptech的专栏 476

【信息科学与工程学】计算机科学与自动化——第一百五十五篇 缓存系统设计02

编号176-190共15个条目,覆盖了缓存互连网络(环形/交叉开关)、硅光互连、散热设计、3D封装TSV、信号完整性、冗余设计、老化补偿、电磁兼容、时钟分布、JTAG测试、安全硬件、调试探针、容错路由、体偏置、共振时钟。:编号161-175共15个条目,聚焦于缓存硬件设计与配置,涵盖了MESI协议、多级TLB、分支预测BTB/BHT、自适应预取引擎、ECC纠错汉明码、路分区硬件、非暂时性存储旁路、缓存冲刷指令、缓存锁定、压缩硬件、嗅探过滤器、虚拟化EPT、QoS限速、内置自测BIST、电源管理DVFS。

weixin_49199313的博客 174

【信息科学与工程学】计算机科学与自动化——第十八篇 存储系统设计 10 存储器/存储软件/存储芯片/存储盘/存储系统/存储网络01

③ MTJ电阻 → 界面:TMR=(R_AP-R_P)/R_P = 2P₁P₂/(1-P₁P₂) (Julliere模型);③ 访问延迟模型 → 统计:平均访问延迟 = p_hot * t_dram + (1-p_hot) * t_nvm + t_migration_overhead;:① 储能电容计算 → 数学物理:所需能量 E = P * t_backup,电容 C = 2E / (V_start² - V_end²);:① B-tree平衡 → 代数:树高 h = log_m(N),m为扇出;

weixin_49199313的博客 262

大模型微调中词向量演化的动态可视化方法

词向量是大语言模型语义理解的核心载体,其在微调过程中的高维空间演化直接反映模型认知结构的重构。理解这一演化需突破静态快照局限,借助降维、时序建模与可视化技术,将抽象向量位移转化为可解释的动态轨迹。UMAP因其跨帧坐标一致性成为生产首选,配合语义感知采样与运动学插帧,能真实还原嵌入层的‘相变点’与‘漂移趋势’。该技术不仅支撑算法调试(如识别‘心梗’与‘胸痛’异常靠近),更赋能产品经理、领域专家等非技术角色参与模型评估——通过观察‘高血压’‘糖尿病’等临床术语的相对距离变化,实现对微调语义合理性的快速判断。

weixin_30256901的博客 340

利用featureCounts实现高效转录本定量:从比对到下游分析

本文详细介绍了利用featureCounts工具进行RNA-seq转录本定量的完整流程。从软件安装、输入文件准备,到核心命令参数解析与批量样本处理,再到将生成的计数矩阵无缝衔接至DESeq2进行差异表达分析,提供了从比对到下游分析的一站式实战指南。文章重点阐述了featureCounts在效率与易用性上的优势,并分享了常见问题排查与性能优化技巧,帮助研究者高效完成转录本定量这一关键步骤。

weixin_29069131的博客 317

生产环境 K8s 高可用架构实战:kubeadm HA + Haproxy+Keepalived + etcd 运维备份恢复与集群升级

本文摘要: 本文记录了2026年8月17日进行的Kubernetes高可用环境部署与etcd运维实战全过程。主要内容包括: 单机etcd体验与三节点集群搭建(10:24-11:24) etcd数据备份恢复演练(14:01-17:19),包含目录备份和snapshot快照两种方式 生产环境高可用架构部署流程: 基础环境准备(IPVS、IP规划等) 正式etcd集群配置(3节点) Keepalived+Haproxy实现VIP和负载均衡 kubeadm初始化HA集群 集群版本升级(v1.30.2→v1.30.4

Ningcode的博客 215

告别卡顿!用LVGL+DMA刷新STM32F407的SPI屏幕,性能提升实战

本文详细介绍了如何通过LVGL+DMA技术优化STM32F407驱动SPI屏幕的性能,实现接近60FPS的流畅刷新。从硬件瓶颈分析到SPI与DMA的精细化配置,再到LVGL的双缓冲机制与局部刷新优化,提供了一套完整的性能提升方案。特别适合嵌入式GUI开发中面临卡顿问题的工程师参考。

weixin_42531588的博客 378

【AI智能体】Dify 搭建数据分析应用实战操作详解

Dify 搭建数据分析应用实战详解

congge 7290
上一篇: nginx 挂了怎么办?
下一篇: LVS是什么及作用?
Hell_potato777
博客等级 码龄6年 47粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值