目录

AtCoder B 212

AtCoder

tyz020 | 02 Aug 2021

题目大意

题目给了一组四位数字,需要判断其是否符合一下两种弱密码情况:

1)四位数字都相同

2)从第一位到第三位数字,后面一位数字按顺序(0~8、9~0)跟随前一位数字。

解题思路

做遍历循环判断前三位数字:

1)前三个数字每一个都与后面一个相同,即为弱密码

2)前三个数字每一个与后面一个的差为1;或前一个数字等于9时,后一个数为0,即为弱密码

复杂度解析

遍历循环只需要遍历前三个数,复杂度即为: \(O(1)\)

提交代码

import java.util.*;
import java.io.*;

public class Main{
  static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  static int[] input;
  
  public static void main(String[] args) throws IOException {
    parseInput();
    if(check1() && check2()) {
      System.out.println("Strong");
    } else {
      System.out.println("Weak");
    }
  }
  
  public static boolean check1() {
    boolean result = false;
    for(int i = 0; i < input.length - 1; i++) {
      if(input[i] != input[i + 1]) {
        result = true;
        break;
      }
    }
    return result;
  }
  
  public static boolean check2() {
    boolean result = false;
    for(int i = 0; i < input.length - 1; i++) {
      if((input[i] != 9 && input[i] + 1 != input[i + 1]) || (input[i] == 9 && input[i + 1] != 0)) {
        result = true;
        return result;
      }
    }
    return result;
  }
  
  public static void parseInput() throws IOException {
    String[] args = br.readLine().split("");
    input = new int[args.length];
    for(int i = 0; i < args.length; i++) {
      input[i] = Integer.parseInt(args[i]);
    }
  }
}

评论区