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

比较两个字符串的大小

问题

问题:比较两个字符串的大小,返回较大的字符串。字符串形如12-4-5-6-7-1,每个数字之间用-隔开。-隔开的数字大小也不定,可能超过浏览器或者计算机的精度。

/** a = '12-4-5-6-7-1' b = '1-2-4-5-6-7-2'* a > b return 1* a < b  return -1* a == b return 0*/

解题思路

有一种传统的方法是将字符串ab分别转换为数字,然后比较大小。但是这种方法在字符串长度超过浏览器或者计算机的精度时,会出现错误的结果。还可以去除分隔符-再将每个数字单独作为数组项,遍历数组进行比较。今天不打算用数据解决这个问题,而是用生成器yield

生成器yield可以将一个函数的执行过程分解为多个步骤,每个步骤可以暂停和恢复执行。这样就可以在比较大的字符串时,避免一次性比较所有数字,而是每次比较一个数字,避免精度问题。

代码实现

yield方案实现如下:

var a="1-2-3-4-7-67",b="1-29-3-4-67";function removeSplitChar(str,splitChar){return str.split(splitChar).join("")
}function* numberGenerator(str) {for (const char of str) {yield parseInt(char, 10);}
}function compareWithGenerators(a, b) {a=removeSplitChar(a,'-');b=removeSplitChar(b,'-');const lengthA=a.length,lengthB=b.length;if(lengthA > lengthB){return 1}else if(lengthA < lengthB){return -1}const genA = numberGenerator(a);const genB = numberGenerator(b);while (true) {const { value: valA, done: doneA } = genA.next();const { value: valB, done: doneB } = genB.next();if (doneA && doneB) return 0;   // 长度相同且所有段相等// 比较当前段if (valA > valB) return 1;if (valA < valB) return -1;// 如果相等,继续比较下一段}
}console.log(compareWithGenerators(a, b)); // 输出: -1 (a < b)
http://www.dtcms.com/a/355325.html

相关文章:

  • 使用CDN后如何才不暴露IP
  • EtherNet/IP 转 Modbus 协议网关(三格电子)
  • SOME/IP-SD通信中的信息安全保证
  • leetcode_73 矩阵置零
  • (LeetCode 面试经典 150 题) 103. 二叉树的锯齿形层序遍历(广度优先搜索bfs)
  • [n8n] 工作流数据库管理SQLite | 数据访问层-REST API服务
  • 解决PyCharm打开PowerShell终端报错找不到conda-hook.ps1文件
  • 前端javascript在线生成excel,word模板-通用场景(免费)
  • Spring Boot 定时任务入门
  • 使用Java实现PDF文件安全检测:防止恶意内容注入
  • ubuntu20安装lammps
  • PDFMathTranslate,完全免费的电脑 PDF 文档翻译软件
  • 怎么保护信息安全?技术理论分析
  • Shell 脚本编程规范与变量
  • [调试][实现][原理]用Golang实现建议断点调试器
  • 裸金属服务器与虚拟机、物理机的核心差异是什么?
  • 鸿蒙Harmony-从零开始构建类似于安卓GreenDao的ORM数据库(二)
  • Kea DHCP高危漏洞CVE-2025-40779:单个数据包即可导致服务器崩溃
  • 获取小红书某个用户列表
  • Swift 解法详解 LeetCode 365:水壶问题
  • day083-Filebeat数据采集案例与Kibana可视化应用
  • Leetcode 494. 目标和 动态规划-01背包
  • 【踩坑记录】SpringBoot 项目报 Communications link failure 的解决方法
  • 数据结构初阶:详解双链表
  • 在angular20中使用monaco-editor
  • LLM Agent工具设计规范总结
  • Python 实现归并排序:从原理到代码
  • Ansys Electronics Desktop 2025 R2 软件界面介绍
  • open webui源码分析10-四个特征之搜索
  • 系统架构师-软件工程