检查字符串是否包含大写字母、小写字母、特殊字符和数字值

给定一个长度为 N 的字符串 str,我们的任务是检查该字符串是否同时包含大写字母、小写字母、特殊字符和数字值。如果字符串包含所有这些元素,我们则打印 “Yes”。否则,打印 “No”

示例:

> 输入: str = "#GeeksForGeeks123@"

> 输出: Yes

> 解释:

> 给定的字符串包含大写字符(‘G‘, ‘F‘)、小写字符(‘e‘, ‘k‘, ‘s‘, ‘o‘, ‘r‘)、特殊字符( ‘#‘, ‘@‘)和数字值(‘1‘, ‘2‘, ‘3‘)。因此,输出为 Yes。

>

>

>

>

>

> 输入: str = "GeeksForGeeks"

> 输出: No

> 解释:

> 给定的字符串仅包含大写字符和小写字符。因此,输出为 No。

朴素方法: 最简单的方法是遍历字符串并检查给定字符串是否包含大写、小写、数字和特殊字符。以下是具体步骤:

  • 从头到尾逐个字符遍历字符串。
  • 检查每个字符的 ASCII 值是否符合以下条件:
  • 如果 ASCII 值位于 [65, 90] 范围内,则它是一个大写字母。
  • 如果 ASCII 值位于 [97, 122] 范围内,则它是一个小写字母。
  • 如果 ASCII 值位于 [48, 57] 范围内,则它是一个数字。
  • 如果 ASCII 值位于 [32, 47][58, 64][91, 96][123, 126] 范围内,则它是一个特殊字符。
  • 如果字符串包含上述所有内容,则打印 Yes。否则,打印 No

时间复杂度: O(N)
辅助空间: O(1)
正则表达式方法: 这个思路是利用正则表达式的概念来解决这个问题。以下是具体步骤:

  • 创建一个正则表达式来检查给定字符串是否包含大写、小写、特殊字符和数字值,如下所示:

> regex = "^(?=.[a-z])(?=.[A-Z])(?=.\\d)" + "(?=.[-+_!@#$%^&*., ?]).+$"

> 其中,

>

>

>

> – ^ 代表字符串的开始。

> – (?=.*[a-z]) 代表至少有一个小写字符。

> – (?=.*[A-Z]) 代表至少有一个大写字符。

> – (?=.*\\d) 代表至少有一个数字值。

> – (?=.[-+_!@#$%^&., ?]) 代表至少有一个特殊字符。

> – . 代表除换行符以外的任何字符。

> – + 代表一次或多次。

  • 使用 Pattern.matcher() 将给定字符串与正则表达式进行匹配。
  • 如果字符串与给定的正则表达式匹配,则打印 Yes。否则,打印 No

下面是上述方法的实现:

C++


CODEBLOCK_5c016108

Java


CODEBLOCK_56d81dcc

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/47948.html
点赞
0.00 平均评分 (0% 分数) - 0