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

字符串字典序比较

字符串字典序学习笔记

一、核心定义

  • 概念:类似查字典的排序方式,基于字符的底层编码值(ASCII/Unicode)逐位比较。
  • 本质:不依赖语义、不依赖数值大小,只看字符编码的先后顺序。

二、比较规则

  1. 逐位决胜:从左到右比较,第一位不同的字符决定大小。后续字符直接忽略。
    • 例:"abc" < "abd"(第三位 'c' < 'd'
  2. 前缀规则:若 A 是 B 的前缀,则 A < B(短者胜)。
    • 例:"app" < "apple"
  3. 长度无关性:非前缀关系时,长度不影响大小。
    • 例:"z" > "aaa"(首位 'z' > 'a' 已定胜负)
    • 数字串陷阱:"10" < "2"(字符 '1' < '2',非数值比较)

三、Java 实现要点

  • 正确姿势s1.compareTo(s2)
    • < 0s1 字典序更小
    • == 0:完全相同
    • > 0s1 字典序更大
  • 绝对禁止
    • s1 < s2 / s1 > s2 → 编译报错(Java 不支持运算符重载)
    • s1 == s2 → 比较的是对象引用地址,不是内容
  • 🛡️ 空串安全写法
    // 推荐:先判空,再比较
    if (ans.isEmpty() || tmp.compareTo(ans) < 0) {ans = tmp;
    }
    

附:ASCII 常用顺序(做题必看)
'0'(48) ~ '9' < 'A'(65) ~ 'Z' < 'a'(97) ~ 'z'

涉及大小写混合或纯数字串比较时,务必注意编码差异,不可凭直觉判断。

http://www.jsqmd.com/news/626211/

相关文章:

  • VS2022智能提示汉化实战:从零到一的完整指南
  • 国产数据库认证之旅:从TiDB到OceanBase的实战心得与选型指南
  • 地理数据处理不再复杂:3分钟掌握Mapshaper核心技巧
  • ST7701和ST7701S区别
  • BouncyCastle SM2/SM3/SM4
  • Three.js 3D热力图实现全解析(从原理到实战)
  • LibBriandIDF:ESP32上生产就绪的C++17嵌入式工具库
  • OBS多路推流插件窗口消失?三步快速找回+终极预防指南
  • 嵌入式VGM音频库:轻量级芯片级音源仿真与实时播放
  • BMP183气压传感器驱动开发与嵌入式实战指南
  • 3种实用方法:使用MediaCreationTool.bat绕过Windows 11硬件限制完全指南
  • 别只用来聊天了!手把手教你用PyCharm+Continue+DeepSeek,把代码审查、生成测试、重构都自动化
  • i18n 2026.04.11
  • STM32WLE5CCU6实战:从官方例程到第三方模块的PingPong通信移植详解
  • 性能测试基准
  • 2026装修改造哪家正规:厨房翻新改造/商铺装修改造/墙面翻新改造/旧房翻新改造/精装房装修改造/老房翻新改造/选择指南 - 优质品牌商家
  • 安全智能:MongoDB EF Core 提供程序中的可查询加密和向量搜索铰
  • 【国家级AI安全合规指南】:基于GB/T 44503-2024标准的6层对齐验证体系实战拆解
  • 2026年轨道交通电力电缆生产厂家推荐:涵中低压、低压、中压等厂家(4月版) - 品牌2026
  • ESP8266轻量级Homie物联网框架封装库
  • 3分钟学会使用Balena Etcher:最安全的镜像烧录工具
  • 基于Java Web的商铺租赁管理系统:从需求分析到模块实现的实战指南
  • 数据标注进阶:解决Label-Studio工具中的UTF-8编码与跨列标注难题
  • 把近万个源文件喂给AI之前,我先做了一件事猛
  • A4988步进电机驱动库深度解析与裸机控制实践
  • VSCode搜索优化:如何快速排除node_modules和.min.js文件(附完整配置代码)
  • Python类型提示系统mypy静态检查与运行时类型验证的集成
  • 需求管理中的用户故事与用例结合方法
  • 适配机器人全场景抓取,专业厂商技术方案与实力全面盘点 - 品牌2026
  • 高性能客服系统技术内幕:通过 SpinWait 自旋等待结构体提升高频消息分发性能挥