Advertisement
Dmaxiya

Palindrome Pairs 超时代码

Sep 17th, 2022
956
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.65 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.util.ArrayList;
  3. import java.util.Arrays;
  4. import java.util.List;
  5. import java.util.stream.Collectors;
  6. import java.util.stream.Stream;
  7.  
  8. class Solution {
  9.     private final long MOD = 1000000007;
  10.     private final int maxn = 300 + 100;
  11.     private long[] pow = new long[maxn];
  12.  
  13.     public List<List<Integer>> palindromePairs(String[] words) {
  14.         pow[0] = 1;
  15.         for (int i = 1; i < maxn; ++i) {
  16.             pow[i] = pow[i - 1] * 26 % MOD;
  17.         }
  18.  
  19.         List<Long> hash1 = Arrays.stream(words).map(word -> {
  20.             long hash = 0;
  21.             for (int i = 0; i < word.length(); ++i) {
  22.                 hash = (hash * 26 + word.charAt(i) - 'a' + 1) % MOD;
  23.             }
  24.             return hash;
  25.         }).collect(Collectors.toList());
  26.         List<Long> hash2 = Arrays.stream(words).map(word -> {
  27.             long hash = 0;
  28.             for (int i = word.length() - 1; i >= 0; --i) {
  29.                 hash = (hash * 26 + word.charAt(i) - 'a' + 1) % MOD;
  30.             }
  31.             return hash;
  32.         }).collect(Collectors.toList());
  33.  
  34.         List<List<Integer>> ans = new ArrayList<>();
  35.         for (int i = 0; i < words.length; ++i) {
  36.             for (int j = 0; j < words.length; ++j) {
  37.                 if (i == j) {
  38.                     continue;
  39.                 }
  40.                 if ((hash1.get(i) * pow[words[j].length()] % MOD + hash1.get(j)) % MOD ==
  41.                         (hash2.get(j) * pow[words[i].length()] % MOD + hash2.get(i)) % MOD) {
  42.                     ans.add(Stream.of(i, j).collect(Collectors.toList()));
  43.                 }
  44.             }
  45.         }
  46.         return ans;
  47.     }
  48. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement