当前等级

题目

ATM machines allow 4 or 6 digit PIN codes and PIN codes cannot contain anything but exactly 4 digits or exactly 6 digits. If the function is passed a valid PIN string, return true, else return false. ATM机允许4位或6位PIN码,PIN码只能包含4位或6位。 如果向函数传递了有效的PIN字符串,则返回true,否则返回false。

例子

“1234” —> true “12345” —> false “a234” —> false

原题链接

分析

解法一

  1. 判断字符串长度 4位或 6 位
  2. 字符串遍历
  3. 判断是否是数字

    解法二

  4. 写正则表达式 判断是否是4或6位的纯数字

  5. 代入字符串判断

    我的解法

    ```java import java.util.regex.Pattern; public class Solution {

    public static boolean validatePin(String pin) { return Pattern.compile(“[\d]{4}|[\d]{6}”).matcher(pin).matches(); }

}

  1. <a name="SIKo6"></a>
  2. ### 参考解法
  3. ```java
  4. import java.util.regex.*;
  5. public class Solution {
  6. public static boolean validatePin(String pin) {
  7. return pin.matches("\\d{4}|\\d{6}");
  8. }
  9. }
  1. public class Solution {
  2. public static boolean validatePin(String pin) {
  3. if (pin == null || (pin.length() != 4 && pin.length() != 6)) {
  4. return false;
  5. }
  6. for (int i = 0; i < pin.length(); i++) {
  7. if (!Character.isDigit(pin.charAt(i))) {
  8. return false;
  9. }
  10. }
  11. return true;
  12. }
  13. }

提升

  1. 利用正则表达式可以极大简化操作
  2. 如果表达式需要匹配多次,要先进行预编译(设置成静态常量),加快匹配速度。