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

【Leetcode 1805 】 字符串中不同整数的数目—— 双指针

给你一个字符串 word ,该字符串由数字和小写英文字母组成。

请你用空格替换每个不是数字的字符。例如,"a123bc34d8ef34" 将会变成 " 123  34 8  34" 。注意,剩下的这些整数为(相邻彼此至少有一个空格隔开):"123""34""8" 和 "34" 。

返回对 word 完成替换后形成的 不同 整数的数目。

只有当两个整数的 不含前导零 的十进制表示不同, 才认为这两个整数也不同。

示例 1:

输入:word = "a123bc34d8ef34"
输出:3
解释:不同的整数有 "123"、"34" 和 "8" 。注意,"34" 只计数一次。

示例 2:

输入:word = "leet1234code234"
输出:2

示例 3:

输入:word = "a1b01c001"
输出:1
解释:"1"、"01" 和 "001" 视为同一个整数的十进制表示,因为在比较十进制值时会忽略前导零的存在。

双指针

// 双指针
function numDifferentIntegers(word: string): number {const wordSet = new Set<string>();// 左右指针let l = 0,r = 0,n = word.length;function isNumber(str: string) {return str >= "0" && str <= "9";}while (true) {//将左指针移动到数字位置while (!isNumber(word[l]) && l < n) {l++;}if (l >= n) break;r = l;//移动字符串右指针,直到不为数字while (isNumber(word[r]) && r < n) {r++;}//如果长度只有1 ,则保留0while (word[l] === "0" && r - l > 1) {l++;}wordSet.add(word.slice(l, r));// 将左指针快速跳到右指针,不用再++了l = r;}return wordSet.size;
}


http://www.mrgr.cn/news/7776.html

相关文章:

  • 基于Springboot/Vue的企业内部培训考试系统
  • ML307R_APP_DEMO_SDK TCP/UDP使用介绍
  • Java 调整字符串,验证码生成
  • Redis持久化
  • ViT篇外:NVIDIA Llama-3.1-Minitron 4B
  • 【vue】编辑器段落对应材料同步滚动交互
  • 搭建springboot项目,并解决项目出现红色J问题
  • [LitCTF 2023]1zjs
  • MyBatis配置允许批量插入或更新数据
  • DevExpress中Blazor部分学习
  • 前端实现截图(Vue)
  • ansible:远程自动化运维
  • 【赵渝强老师】执行Oracle的冷备份与冷恢复
  • 【EI会议征稿】第四届能源、动力与电气工程国际学术会议(EPEE 2024)
  • 【Hot100】LeetCode—543. 二叉树的直径
  • linux上datax 安装以及使用
  • 在线英语学习小程序App源码开发技术探讨
  • 鸿蒙HarmonyOS实战:IPC与RPC设备内进程通信
  • Android 应用中广播权限未指定风险与解决方案
  • Linux 可视化管理工具:Webmin