You are given a string S consisting of letters 'a' and 'b'. The task is to rearrange letters in S so that it contains three consecutive letters 'a' and three consecutive letters 'b'. What is the minimum necessary number of swaps of neighbouring letters to achieve this?
Write a function:
class Solution { public int solution(String S); }
that, given a string S of length N, returns the number of swaps after which S would contain "aaa" and "bbb" as substrings. If it's not possible to rearrange the letters in such a way, the function should return −1.
Examples:
1. Given S = "ababab", the function should return 3. The sequence of swaps could be as follows: ababab → abaabb → aababb → aaabbb.
2. Given S = "abbbbaa", the function should return 4. The sequence of four swaps is: abbbbaa → babbbaa → bbabbaa → bbbabaa → bbbbaaa.
3. Given S = "bbbababaaab", the function should return 0. S already contains both "aaa" and "bbb" as substrings.
4. Given S = "abbabb", the function should return −1. It is not possible to obtain the required result from S as there are only two letters 'a'.
Write an efficient algorithm for the following assumptions:
- N is an integer within the range [1..100,000];
- string S is made only of the characters 'a' and/or 'b'.
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps =
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str,
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
}
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
}
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
}
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swa)
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps)
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
}else if(dir<0){
}else{
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
}else{
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
}
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.index
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dira=-1; dira<2; dira++){
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
return minSwaps;
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1;
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
return minSwaps;
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1;
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
return minSwaps;
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int i = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1;
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
return minSwaps;
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int i = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1;
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
return minSwaps;
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int i = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
class Solution {
public int solution(String str) {
// write your code in Java SE 8
String[] stra;
String[] strb;
int swaps=-1;
int swa;
int swb;
int minSwaps = -1;
if (str.indexOf("aababb",0)>=0||str.indexOf("bbabaa",0)>=0){
if(str.indexOf("aaa",0)>=0 && str.indexOf("bbb",0)>=0){
return 0;
}else{
return 1;
}
}
for (int dira=-1; dira<2; dira++){
for (int dirb=-1; dirb<2; dirb++){
stra = swapLetters(str,"a",dira,true);
strb = swapLetters(stra[0],"b",dirb,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
if (swa<0||swb<0){
return -1;
}
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
strb = swapLetters(str,"b",dirb,true);
stra = swapLetters(strb[0],"a",dira,false);
swa = Integer.parseInt(stra[1]);
swb = Integer.parseInt(strb[1]);
swaps = swa+swb;
if (swaps<2){
return swaps;
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
}
}
}
return minSwaps;
}
private String[] swapLetters(String str, String letter, int dir, boolean needNewStr){
int swaps=0;
int p1=-1;
int p2=-1;
int p3=-1;
int mp1=-1;
int mp2=-1;
int mp3=-1;
int minSwaps = -1;
String newStr ="";
String winPattern = letter+letter+letter;
String otherLetter = letter.equals("a")?"b":"a";
String almostWin1 = letter+otherLetter+letter+letter;
String almostWin2 = letter+letter+otherLetter+letter;
int aw1 = str.indexOf(almostWin1);
int aw2 = str.indexOf(almostWin2);
String[] result = {"",""};
if (str.indexOf(winPattern,0)<0){
if (aw1>=0||aw2>=0){
if (aw1>=0){
result[0]=str.substring(0,aw1)+otherLetter+winPattern+str.substring(aw1+4,str.length());
}else{
result[0]=str.substring(0,aw2)+winPattern+otherLetter+str.substring(aw2+4,str.length());
}
result[1]="1";
return result;
}
int i = -1;
while (i<str.length()){
i=str.indexOf(letter,i+1);
if(i<0){
break;
}else{
p3=p2;
p2=p1;
p1=i;
if (p3>=0){
switch (dir){
case 1: swaps = (p1-p3-2)+(p1-p2-1);
break;
case -1: swaps = (p1-p3-2)+(p2-p3-1);
break;
case 0: swaps = (p1-p2-1)+(p2-p3-1);
break;
default: result[0]="";
result[1]="-1";
}
if (swaps<minSwaps||minSwaps<0){
minSwaps=swaps;
mp1=p1;
mp2=p2;
mp3=p3;
}
}
}
if (swaps==1){
break;
}
}
if(p3<0){
result[0]="";
result[1]="-1";
}else{
if (needNewStr){
newStr = str.substring(0,mp3);
if (dir>0){
newStr += str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1)+winPattern;
}else if(dir<0){
newStr += winPattern + str.substring(mp3+1,mp2)+str.substring(mp2+1,mp1);
}else{
newStr += str.substring(mp3+1,mp2)+winPattern+str.substring(mp2+1,mp1);
}
newStr+= str.substring(mp1+1,str.length());
}else{
newStr="";
}
result[0]=newStr;
result[1]=Integer.toString(minSwaps);
}
}else{
result[0]=str;
result[1]="0";
}
return result;
}
}
The solution obtained perfect score.