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

【每天一道算法题】用JavaScript实现的字符串比较算法

题目比较规则如下:

- abc < abd
- ab < abc
- cda > afk
- abc == abc
- a < cnu

实现思路

用最简单直白的方式解释思路,就像比较两个单词在字典中的顺序:

1. 从第一个字母开始比

  • 像查字典一样,从左到右逐个字母比较

  • 示例:“apple” vs “banana” → 第一个字母 a < b → 直接得出结果

2. 遇到不同字母就决胜负

  • 当发现某个位置字母不同时,比较这两个字母的ASCII值

  • 示例:“cat” vs “dog” → 第一字母 c (99) < d (100) → “cat” < “dog”

3. 相同前缀看长度

  • 如果前面的字母都相同,看哪个单词更短

  • 示例:“app” vs “apple” → 前3字母相同 → 短的小 → “app” < “apple”

4. 完全相同才相等

  • 只有所有字母都相同且长度完全一致才算相等

  • 示例:“hello” vs “hello” → 完全相同 → 相等

完整实现

function compareStrings(str1, str2) {// 获取两个字符串的最小长度const minLength = Math.min(str1.length, str2.length);// 逐个字符比较for (let i = 0; i < minLength; i++) {if (str1[i] !== str2[i]) {// 当字符不同时,直接根据字符的Unicode值比较大小return str1[i].charCodeAt(0) - str2[i].charCodeAt(0);}}// 如果公共部分完全相同,比较字符串长度return str1.length - str2.length;
}// 使用示例
console.log(compareStrings("abc", "abd")); // 输出负数 (abc < abd)
console.log(compareStrings("ab", "abc"));  // 输出负数 (ab < abc)
console.log(compareStrings("cda", "afk")); // 输出正数 (cda > afk)
console.log(compareStrings("abc", "abc")); // 输出0 (abc == abc)
console.log(compareStrings("a", "cnu"));   // 输出负数 (a < cnu)

总结

这个过程其实优点你查字典:先看第一个字母,谁小谁在前面;如果第一个字母一样,就看第二个字母,以此类推。如果都相同,但一个单词更短,那短的排在前面。

http://www.xdnf.cn/news/922699.html

相关文章:

  • 【云架构】
  • 后端下载限速(redis记录实时并发,bucket4j动态限速)
  • Java 常用 API 分类总结(算法竞赛考前速记篇)- 适用于算法竞赛(如 CCF CSP、蓝桥杯、NOI)
  • 【PhysUnits】15.17 比例因子模块 (ratio.rs)
  • 河南建筑安全员B证考试最新精选题
  • Python 函数全攻略:函数基础
  • JavaSec-SpringBoot框架
  • JAVA理论第三章-多线程
  • Python实例题:Python计算微积分
  • 2025年06月07日Github流行趋势
  • go语言学习 第9章:映射(Map)
  • 推客系统小程序开发:告别低效推广,开启精准获客新时代
  • C++课设:实现简易文件加密工具(凯撒密码、异或加密、Base64编码)
  • 25N60-ASEMI电源管理领域专用25N60
  • 基于ROS2,撰写python脚本,根据给定的舵-桨动力学模型实现动力学更新
  • 【CSS-4】掌握CSS文字样式:从基础到高级技巧
  • Qt/C++学习系列之Excel使用记录
  • 第二部分 方法,还是方法——“信管法则”的四大要点
  • 高保真组件库:数字输入框
  • FlashAttention 公式推导
  • [AI绘画]sd学习记录(二)文生图参数进阶
  • Rapidio门铃消息FIFO溢出机制
  • TongWeb7.0动态密钥说明
  • 实战:子组件获取父组件订单信息
  • 【学习笔记】如何给软件加数字签名
  • 在 Windows 11 或 10 上将 Git 升级到最新版本的方法
  • 【Linux】LInux下第一个程序:进度条
  • 十一、【ESP32开发全栈指南: TCP通信服务端】
  • 1-3 Linux-虚拟机(2025.6.7学习篇- mac版本)
  • Sentry 接口返回 Status Code 429 Too Many Requests