提出 #70615419


ソースコード 拡げる

import java.io.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        PrintWriter pw = new PrintWriter(System.out);
        
        int t = Integer.parseInt(br.readLine());
        
        while(t-- > 0) {
            String A = br.readLine().trim();
            String B = br.readLine().trim();
            
            pw.println(solve(A, B));
        }
        
        pw.close();
    }
    
    static int solve(String A, String B) {
        int n = A.length();
        
        // Check if same character frequencies
        int[] freqA = new int[2], freqB = new int[2];
        for(int i = 0; i < n; i++) {
            freqA[A.charAt(i) - '0']++;
            freqB[B.charAt(i) - '0']++;
        }
        if(freqA[0] != freqB[0]) return -1;
        
        // Use Z algorithm on B + "#" + A + A
        String s = B + "#" + A + A;
        int[] z = zFunction(s);
        
        // Look for matches at positions n+1 to 2n
        for(int i = n + 1; i < 2 * n + 1; i++) {
            if(z[i] == n) {
                return i - n - 1;
            }
        }
        
        return -1;
    }
    
    static int[] zFunction(String s) {
        int n = s.length();
        int[] z = new int[n];
        int l = 0, r = 0;
        
        for(int i = 1; i < n; i++) {
            if(i <= r) {
                z[i] = Math.min(r - i + 1, z[i - l]);
            }
            
            while(i + z[i] < n && s.charAt(z[i]) == s.charAt(i + z[i])) {
                z[i]++;
            }
            
            if(i + z[i] - 1 > r) {
                l = i;
                r = i + z[i] - 1;
            }
        }
        
        return z;
    }
}

提出情報

提出日時
問題 E - Shift String
ユーザ addy
言語 Java24 (OpenJDK 24.0.2)
得点 450
コード長 1839 Byte
結果 AC
実行時間 219 ms
メモリ 59516 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 450 / 450
結果
AC × 1
AC × 52
セット名 テストケース
Sample sample_01.txt
All killer_01.txt, sample_01.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt
ケース名 結果 実行時間 メモリ
killer_01.txt AC 131 ms 44760 KiB
sample_01.txt AC 49 ms 38528 KiB
test_01.txt AC 50 ms 38556 KiB
test_02.txt AC 50 ms 38572 KiB
test_03.txt AC 50 ms 38464 KiB
test_04.txt AC 53 ms 38760 KiB
test_05.txt AC 69 ms 39608 KiB
test_06.txt AC 83 ms 40828 KiB
test_07.txt AC 83 ms 41512 KiB
test_08.txt AC 214 ms 54452 KiB
test_09.txt AC 191 ms 54424 KiB
test_10.txt AC 215 ms 53964 KiB
test_11.txt AC 219 ms 52564 KiB
test_12.txt AC 216 ms 56020 KiB
test_13.txt AC 213 ms 56464 KiB
test_14.txt AC 205 ms 58028 KiB
test_15.txt AC 201 ms 57780 KiB
test_16.txt AC 176 ms 58872 KiB
test_17.txt AC 133 ms 47988 KiB
test_18.txt AC 157 ms 58040 KiB
test_19.txt AC 169 ms 58680 KiB
test_20.txt AC 184 ms 58564 KiB
test_21.txt AC 174 ms 58740 KiB
test_22.txt AC 167 ms 58544 KiB
test_23.txt AC 208 ms 59516 KiB
test_24.txt AC 175 ms 58748 KiB
test_25.txt AC 173 ms 59096 KiB
test_26.txt AC 191 ms 58976 KiB
test_27.txt AC 173 ms 58552 KiB
test_28.txt AC 140 ms 49332 KiB
test_29.txt AC 140 ms 47624 KiB
test_30.txt AC 122 ms 47724 KiB
test_31.txt AC 193 ms 58984 KiB
test_32.txt AC 123 ms 47496 KiB
test_33.txt AC 134 ms 47880 KiB
test_34.txt AC 112 ms 47180 KiB
test_35.txt AC 169 ms 59100 KiB
test_36.txt AC 138 ms 47512 KiB
test_37.txt AC 108 ms 46852 KiB
test_38.txt AC 132 ms 48228 KiB
test_39.txt AC 171 ms 58696 KiB
test_40.txt AC 122 ms 48392 KiB
test_41.txt AC 119 ms 47500 KiB
test_42.txt AC 134 ms 47188 KiB
test_43.txt AC 173 ms 58788 KiB
test_44.txt AC 160 ms 59372 KiB
test_45.txt AC 170 ms 58684 KiB
test_46.txt AC 169 ms 58612 KiB
test_47.txt AC 94 ms 43248 KiB
test_48.txt AC 95 ms 43340 KiB
test_49.txt AC 127 ms 47684 KiB
test_50.txt AC 145 ms 48304 KiB