目录
示例 1输入 :ab cdab输出: true示例 2输入:ab efaef输出: false示例 3输入:ab bcd efcbd fe输出: true示例 4输入:ab bcd efcd ef输出: false示例 5输入:wood wood woodwodo wdoo输出: true示例 6输入:woodwodo wood输出: false
- public static void main(String[] args) {
-
- Scanner scanner = new Scanner(System.in);
- String newspaper = scanner.nextLine();
- String anonymous = scanner.nextLine();
- String[] newspaperArray = newspaper.split(" ");
- String[] anonymousArray = anonymous.split(" ");
- TreeSet
set = new TreeSet<>(); - for (String news : newspaperArray) {
- char[] charArray = news.toCharArray();
- Arrays.sort(charArray);
- String value = String.valueOf(charArray);
- if (!set.contains(value)) {
- set.add(value);
- }
- }
- boolean canAppend = true;
- for (String anonymousStr : anonymousArray) {
- char[] anonymousCharArray = anonymousStr.toCharArray();
- Arrays.sort(anonymousCharArray);
- String sortedAnonymous = String.valueOf(anonymousCharArray);
- //set里面没有拼出来 就返回false
- if (!set.contains(sortedAnonymous)) {
- canAppend = false;
- break;
- }
- }
- System.out.println(canAppend ? "true" : "false");
- }
示例 1输入:512314输出: 3说明:一共有 5 个积木,第 1 个积木和第 4 个积木数字相同,其距离为 3 ;
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int N = sc.nextInt();
- int[] nums = new int[N];
- for (int i = 0; i < N; i++) {
- nums[i] = sc.nextInt();
- }
- System.out.println(findMaxDistance(nums));
- }
-
- public static int findMaxDistance(int[] nums) {
- Map
map = new HashMap<>(); - int maxDistance = -1;
- for (int i = 0; i < nums.length; i++) {
- if (map.containsKey(nums[i])) {
- //这段代码是计算最大距离的。
- //首先,定义了一个变量maxDistance来存储最大距离,初始值为-1。
- //然后,使用一个循环遍历输入的积木上的数字。在每次循环中,通过map.get(nums[i])获取当前数字在HashMap中对应的位置。如果该位置存在(即之前已经出现过这个数字),则计算当前位置与之前出现该数字的位置之间的距离,并更新maxDistance为较大的那个值。如果该位置不存在(即之前没有出现过这个数字),则将当前位置存入HashMap中。
- //最后,返回maxDistance作为结果。
- maxDistance = Math.max(maxDistance, i - map.get(nums[i]));
- } else {
- map.put(nums[i], i);
- }
- }
- return maxDistance;
- }