2
public int maxRepOpt1(String s) {3
int[] count = new int[26];4
int[] left = new int[s.length()];5
int[] right = new int[s.length()];7
// Left Array Containing Length Of Subarray Having Equal Characters Till That Index8
for (int i = 0; i < s.length(); i++) {9
count[s.charAt(i) - 'a']++;11
if (s.charAt(i) == s.charAt(i - 1)) {12
left[i] = left[i - 1] + 1;19
max = Math.max(max, left[i]);21
// Right Array Containing Length Of Subarray Having Equal Characters Till That Index22
for (int i = s.length() - 1; i >= 0; i--) {23
if (i < s.length() - 1) {24
if (s.charAt(i + 1) == s.charAt(i)) {25
right[i] = right[i + 1] + 1;33
// Count The Length Of SubString Having Maximum Length When A Character Is Swapped34
for (int i = 1; i < s.length() - 1; i++) {35
if (s.charAt(i - 1) == s.charAt(i + 1) && s.charAt(i) != s.charAt(i - 1)) {36
if (count[s.charAt(i - 1) - 'a'] == left[i - 1] + right[i + 1]) {37
max = Math.max(max, left[i - 1] + right[i + 1]);39
max = Math.max(max, left[i - 1] + right[i + 1] + 1);42
if (count[s.charAt(i) - 'a'] == left[i]) {43
max = Math.max(max, left[i]);45
max = Math.max(max, left[i] + 1);49
if (count[s.charAt(s.length() - 1) - 'a'] != left[s.length() - 1]) {50
max = Math.max(max, left[s.length() - 1] + 1);