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

71 阅读3分钟

题目如下:

image.png 题目概要:

这道题看着不算难,但包含的知识点比较丰富,有许多地方值得让人注意,比如Stringbulid字符串生成器的好处。 本题给出一个字符串,要我们把字符串的字母全部换成空格后,统计不重复的数字的个数(不能有0的前缀)。我的思路便是,首先用Stringbulid的字符串生成器来将原字符串word中的字母替换成空格并保存在生成器中。然后用String.replaceFirst()的方法来将提取的字符子串中的前导零去掉,最后保存在Set集合中,通过Set集合的不可重复的特性来统计他的个数,最后输出Set的长度即个数。

代码如下:

image.png 知识总结:

其实掌握java的这些基本知识这道题并不难,之所以我选择这道题的原因是,它除了包含大量的知识外,还用到了很多实用的工具。 StringBulider--字符串生成器类: 它可以大大提高增加字符串的频率,并且它提供的append()和insert()方法,可以方便快捷的操作这个字符串,提供非常简便的使用方法。 Set---集合类: Set继承了collection接口,包含了add等方法,可以对这个集合进行增添数据,并且Set特性便是元素不能重复,正好适合这道题描述的特性。 foreach语句: 这个语句的使用针对于可迭代对象,如本题中的str1[]字符串数组,可以遍历他的每一个元素进行操作,方便快捷,并且不用在意他的长度以及停止的条件,看起来十分简洁高效。 正则表达式: 这个是我尤其要强调的,正则表达式在很多有关字符串的操作中都起到了非常简单高效的作用,他的功能十分强大,我这里实现的功能比较简单,仅仅是将前置的0去掉,即替换成"",这个空字符串,"0+"这便是一个用正则表达式实现的字符串,其中的+号表示的是1到无限个的意思,也就是意味着将大量的“0”替换掉,这只是他的一个小功能,[^123]代表着这里是一个字符,这个字符是除了‘1’‘2’‘3’之外的字符,A{n}表示A这个字符出现n次,等等。正则表达式的功能不只是局限于字符的搜索匹配,在大多数字符串的操作中它都可以使用,因此我们要多了解正则表达式,来简便代码的实现。

对于刚入门的同学,我建议他们系统的学习java的知识,针对lambda表达式和正则表达式可以投入更大的精力。

学习计划: 针对豆包MarsCode AI刷题的功能,大家可以在刷题过程中,看到AI提示的代码,进行深入的了解,我便是通过这道题目感受出StringBulider生成器的强大之处,以及正则表达式的更多用法,从而加深自己对于这个知识点的理解。

工具运用:

在AI刷题遇到不会的知识或者新颖的用法,大家可以前往b站查看视频又或者csdn等开放社区搜索,了解这个知识点以及这个用法的作用,从而在其他题目中也能灵活运用,通过刷题来增强我们的自主编程能力,以达到更好的学习效果,达到做一题懂百题的效果!