检查给定字符串是否包含所有数字(Java)

10 Sept 2024 | 4 分钟阅读

引言

程序员经常会遇到需要确定给定字符串是否包含0到9所有数字的场景。这在输入验证、数据验证和密码验证等各种情况下都很有用。

问题陈述

编写一个 Java 程序,检查给定字符串是否包含0到9的所有数字。该程序应以字符串作为输入,并输出一条消息,指示字符串是否包含所有数字。如果字符串包含所有数字,则消息必须表明字符串有效。如果字符串不包含所有数字,则消息需要指示字符串无效。

示例 1

输入: "abc123def456ghi789jkl0"。

输出: 有效。

说明: 该字符串包含零到九的所有数字。

示例 2

输入: "The brief brown fox jumps over the lazy dog"。

输出: 无效

说明: 该字符串不包含数字。

示例 3

输入 "1 2 3 4 5 6 7 8 9 0".

输出: 有效

说明: 该字符串包含零到九的所有数字。

方法 1:使用迭代

算法

步骤 1: 创建一个布尔数组来存储 0 到 9 的数字是否存在。

步骤 2: 初始化一个标志为 true,表示字符串中存在所有数字。

步骤 3: 遍历字符串中的每个字符。

步骤 4: 使用 Character.isDigit() 方法检查字符是否为数字。

步骤 5: 如果字符是数字,则将布尔数组中相应的元素设置为 true。

步骤 6: 遍历完所有字符后,遍历布尔数组。

步骤 7: 如果布尔数组中的任何元素为 false,则将标志设置为 false。

步骤 8: 如果标志为 true,则输出“有效”,表示字符串中存在所有数字。否则,输出“无效”。

实施

文件名: StringCheck.java

输出

Valid
InValid
Valid

复杂度分析

时间复杂度: O(n),其中 n 是输入字符串的长度。我们需要遍历字符串一次来检查每个数字是否存在。

空间复杂度: O(1),因为数字的存在存储在大小为 10 的固定大小的布尔数组中。

方法 2:使用 String 类方法

算法

步骤 1: 定义一个名为“containsAllDigits”的方法,该方法接受一个字符串参数“str”并返回一个布尔值。

步骤 2: 遍历数字 0 到 9,对于每个数字

步骤 2.1: 使用“contains”方法检查字符串是否包含当前数字,并使用“String.valueOf(i)”将数字转换为字符串。

步骤 2.2: 如果字符串不包含当前数字,则返回 false。

步骤 3: 如果字符串包含 0 到 9 的所有数字,则返回 true。

步骤 4: 在 main 方法中

步骤 4.1: 定义三个示例文本:str1、str2 和 str3。

步骤 4.2: 使用“containsAllDigits”方法检查每个示例文本是否包含 0 到 9 的所有数字。

步骤 4.3: 如果字符串包含所有数字,则输出“有效”。否则,输出“无效”。

文件名: StringCheck.java

输出

Valid
Invalid
Valid

复杂度分析

上述程序的 time complexity 为 O(n * k),其中 n 是输入字符串的长度,k 是数字的数量(在此例中为常数 10)。

程序的 space complexity 为 O(1),因为程序仅使用恒定的额外空间(用于布尔标志和用于将数字转换为字符串的临时字符串)。