#2983

Palindrome Rearrangement Queries

international master · 2120 · lc hard +32 · failed · 24.8% accepted · 98 likes · top 4%

Description

You are given a 0-indexed string s of even length n.

You are also given a 0-indexed 2D integer array queries, where queries[i] = [ai, bi, ci, di].

For each query i:

- Rearrange characters within s[ai:bi], where 0 <= ai <= bi < n / 2.

- Rearrange characters within s[ci:di], where n / 2 <= ci <= di < n.

Determine whether s can be made a palindrome through these operations.

Each query is answered independently.

Return a 0-indexed boolean array answer where answer[i] is true if the ith query succeeds.

- A substring is a contiguous sequence of characters.

- s[x:y] denotes the substring from index x to y, both inclusive.

Example 1:

Input: s = "abcabc", queries = [[1,1,3,5],[0,2,5,5]]
Output: [true,true]
Explanation: In this example, there are two queries:
In the first query:
- a0 = 1, b0 = 1, c0 = 3, d0 = 5.
- So, you are allowed to rearrange s[1:1] => abcabc and s[3:5] => abcabc.
- To make s a palindrome, s[3:5] can be rearranged to become => abccba.
- Now, s is a palindrome. So, answer[0] = true.
In the second query:
- a1 = 0, b1 = 2, c1 = 5, d1 = 5.
- So, you are allowed to rearrange s[0:2] => abcabc and s[5:5] => abcabc.
- To make s a palindrome, s[0:2] can be rearranged to become => cbaabc.
- Now, s is a palindrome. So, answer[1] = true.

Example 2:

Input: s = "abbcdecbba", queries = [[0,2,7,9]]
Output: [false]
Explanation: In this example, there is only one query.
a0 = 0, b0 = 2, c0 = 7, d0 = 9.
So, you are allowed to rearrange s[0:2] => abbcdecbba and s[7:9] => abbcdecbba.
It is not possible to make s a palindrome by rearranging these substrings because s[3:6] is not a palindrome.
So, answer[0] = false.

Example 3:

Input: s = "acbcab", queries = [[1,2,4,5]]
Output: [true]
Explanation: In this example, there is only one query.
a0 = 1, b0 = 2, c0 = 4, d0 = 5.
So, you are allowed to rearrange s[1:2] => acbcab and s[4:5] => acbcab.
To make s a palindrome s[1:2] can be rearranged to become abccab.
Then, s[4:5] can be rearranged to become abccba.
Now, s is a palindrome. So, answer[0] = true.

Code

1
2
3