不同整数的计数问题 | 豆包MarsCode AI 刷题

62 阅读4分钟

问题描述

小R有一个字符串 word,该字符串由数字和小写英文字母组成。小R想用空格替换每一个不是数字的字符。然后,他希望统计在替换后剩下的整数中,不同整数的数目。

例如,给定字符串 "a123bc34d8ef34",替换后形成的字符串是 " 123 34 8 34",剩下的整数是 "123""34""8" 和 "34"。不同的整数有三个,即 "123""34" 和 "8"

注意,只有当两个整数的不含前导零的十进制表示不同,才认为它们是不同的整数。


测试样例

样例1:

输入:word = "a123bc34d8ef34"
输出:3

样例2:

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

样例3:

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

具体步骤

  1. 初始化一个空字符串 modifiedWord 用于存储替换后的结果。
  2. 遍历输入字符串 word 中的每一个字符:
  • 如果当前字符是数字或者是空格,直接将其添加到 modifiedWord 中。
  • 如果当前字符不是数字,将其替换为一个空格后添加到 modifiedWord 中。
  1. modifiedWord 以空格为分隔符拆分成一个字符串数组 numbers
  2. 初始化一个空集合 uniqueNumbers 用于存储不同的整数。
  3. 遍历 numbers 数组,将每一个字符串转换为整数并添加到 uniqueNumbers 集合中。
  4. 返回 uniqueNumbers 集合的大小,即不同整数的数量。

代码解析

function solution(word) {  
let uniqueNumbers = new Set();  
let currentNumber = "";  
  
for (let char of word) {  
if (!isNaN(char)) {  
currentNumber += char;  
} else {  
if (currentNumber !== "") {  
uniqueNumbers.add(parseInt(currentNumber));  
currentNumber = "";  
}  
}  
}  
  
if (currentNumber !== "") {  
uniqueNumbers.add(parseInt(currentNumber));  
}  
  
return uniqueNumbers.size;  
}  
  
console.log(solution("a123bc34d8ef34") === 3); 
console.log(solution("t1234c23456") === 2); 
console.log(solution("a1b01c001d4") === 2); 

涉及到的知识点

  1. 字符串遍历

    • 使用 for...of 循环遍历字符串中的每个字符。
  2. 类型判断

    • 使用 isNaN() 函数判断字符是否为数字。
  3. 字符串拼接

    • 使用字符串拼接的方式构建当前数字字符串。
  4. 前导零处理

    • 使用 parseInt() 函数去除前导零。
  5. 集合操作

    • 使用 Set 数据结构来存储唯一的整数,从而避免重复。
  6. 条件判断

    • 使用条件语句来处理边界情况,例如最后一个数字子串的处理。
  7. 函数返回值

    • 返回 Set 的大小,即不同整数的数量。

总结

通过青训营豆包MarsCode AI刷题,我学到了如何利用循环遍历字符串中的字符,并在遇到数字时提取整数值。然后,将提取的整数值存储到集合中,以实现去重的效果,并最终返回不同整数的数量。 当然,豆包MarsCode AI刷题工具也凭借其智能、高效的特性,极大地助力了我们的编程学习之旅,显著提升了学习质量和效率。该工具不仅能即时反馈并纠正错误,还具备智能优化、代码注释生成等多种实用功能。这些功能使得用户更容易找到错误根源,并在此基础上培养优化代码的能力,进而提高代码的可读性和规范性。特别值得一提的是,它能够提供多种解题思路和个性化的代码注释,这有助于学习者在夯实基础的同时逐步提升技能,对编程有更系统和深入的理解。

从我个人的使用经验来看,豆包MarsCode不仅提升了我的编程效率,还改变了我对编程学习的看法。每当我遇到难题时,这款工具总能在关键时刻提供有效的帮助,让我能够快速克服难关。此外,借助AI的优化建议,我的代码质量有了明显的提升,不再仅仅满足于“能运行”,而是追求更高的效率和更好的设计。

在当前AI技术迅猛发展的背景下,像豆包MarsCode这样的创新AI学习工具无疑为编程学习提供了强大的支持。它使复杂的学习过程变得更加智能和便捷,使编程不再是令人望而生畏的任务,而是变成了一种充满乐趣的学习体验。