java - 在 QWERTY 键盘中检查连续字母的算法
问题描述
我需要用 Java 编写一个算法来验证密码字段。在所有基本控件(最小长度、lunghezza massima、字母数字...)之间,我必须检查密码是否不是由键盘上按顺序排列的字符组成的(例如QWERTY、YTREWQ、ASDFGH等)。最小密码长度为 8 个字符。密码在 4 位数字后被取消资格 我无法在我的数据库中创建一个带有“禁止”字符串的“字典表”,关于现有算法的任何提示,或者是否有一个库已经在做这样的检查?
解决方案
嗯……我想到了一件事。
您可以尝试构建一个字母矩阵:
-----------------------
| q w e r t y ...
| a s d f g h ... etc.
| z x c v b n ...
-----------------------
给每个字母一个索引。例如,'q' 有 [1,1],'w' 有 [2, 1],'v' 有 [4,3] 等等。
现在,给定一个字符串,找出每个字母之间的距离并将它们相加。
示例:
给定一个字符串“sdgh”:
s-d, distance is 1
d-g, distance is 2
g-h, distance is 1
Total distance is: 4
现在你有一个 4/4 的比率。(四个字母,总距离是四个)。
这符合您的安全要求吗?回答这个问题,你就完成了。
推荐阅读
- html - 为什么我在使用仅月份选择器时也得到日期 [PrimeNG]
- python - 从数组中删除重复项并将值相加 Python
- javascript - 如何使用其他数组的内容制作新数组或数组?
- amazon-web-services - 如何使用邮递员获取 Amazon SNS 电子邮件通知的响应?
- php - Laravel Blade:我的刀片文件中未呈现 HTML 标签
- c++ - 'null' 和 'NULL' 是一样的吗?
- google-cloud-platform - 在 bigquery UDF 中使用 SQL
- symfony4 - 如何在 Symfony4 上使用带小数的 ICU 选择?
- git - 如何将私人组织的 Git 存储库与公共 GitHub 同步?
- mysql - 如何按值获取分组列计数