A long time ago, when the most basic model of an HP3000 computer used to cost $95,000 (over half a million in today's dollars), a very wise man called Gordon Moore made predictions about how computers would become cheaper and more powerful each year. According to Moore, the number of components per integrated circuit would double every two years. Thanks to the creative, determined engineers working in circuit printing technology, we do indeed have smaller, cheaper and more powerful computers today.
Circuit printing, as we call photolithography, is an extremely complex yet rewarding field, and ASML needs the best software engineers in the world to make this magic happen. We work closely with our clients to help them print their circuits in the most effective way. One of our clients requests us to write a method to optimize their circuit efficiency. The circuit is represented as a string consisting of the letters "M" and "L", where M represents Memory units and L represents Logic units. The efficiency of the circuit is measured as the length of the longest interval of letters "M". For example, given input string "LMMMLMMMMLLLM", the longest interval is 4.
Our customer wants to change the circuit in such a way that the longest M-interval will be equal to K. We can change any unit at any position in the circuit, i.e. either we can change any "M" to "L" or any "L" to "M". The objective of this challenge is to calculate the minimum number of changes we have to make in order to achieve the desired longest M-interval length K.
Write a function:
class Solution { public int solution(String S, int K); }
where the first argument, S, represents the circuit as a string of length N that consists of only characters "M" and/or "L" and the second argument, K, is the desired longest M-interval in the string. The return value shall be the minimum number of changes to achieve K as the longest M-interval in the input string.
For example, given S = "MLMMLLM" and K = 3, your function should return 1. We can change the letter at position 4 (counting from 0) to obtain "MLMMMLM", in which the longest interval of letters "M" is exactly three characters long.
For another example, given S = "MLMMMLMMMM" and K = 2, your function should return 2. We can, for example, modify the letters at positions 2 and 7 to get the string "MLLMMLMLMM", which satisfies the desired property.
Write an efficient algorithm for the following assumptions:
- string S is made only of the characters 'M' and/or 'L';
- N is an integer within the range [1..100,000];
- K is an integer within the range [0..N].
// 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 S, int K) {
// write your code in Java SE 8
int lengths[100000];
System.out.println("this is a debug message %d", lengths[999]);
}
}
// 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 S, int K) {
// write your code in Java SE 8
int lengths[100000];
System.out.println("this is a debug message %d", lengths[999]);
return 0;
}
}
Solution.java:10: error: ']' expected int lengths[100000]; ^ Solution.java:10: error: illegal start of expression int lengths[100000]; ^ 2 errors
// 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 S, int K) {
// write your code in Java SE 8
int lengths[][100000];
System.out.println("this is a debug message %d", lengths[999]);
return 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 S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.println("this is a debug message %d", lengths[999]);
return 0;
}
}
Solution.java:11: error: no suitable method found for println(String,int) System.out.println("this is a debug message %d", lengths[999]); ^ method PrintStream.println() is not applicable (actual and formal argument lists differ in length) method PrintStream.println(boolean) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(char) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(int) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(long) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(float) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(double) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(char[]) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(String) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(Object) is not applicable (actual and formal argument lists differ in length) 1 error
// 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 S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.println("this is a debug message %d", lengths[999]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.println("this is a debug message %d", lengths[999]);
return 0;
}
}
Solution.java:13: error: no suitable method found for println(String,int) System.out.println("this is a debug message %d", lengths[999]); ^ method PrintStream.println() is not applicable (actual and formal argument lists differ in length) method PrintStream.println(boolean) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(char) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(int) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(long) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(float) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(double) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(char[]) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(String) is not applicable (actual and formal argument lists differ in length) method PrintStream.println(Object) is not applicable (actual and formal argument lists differ in length) 1 error
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.printl("this is a debug message %d", lengths[999]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.print("this is a debug message %d\n", lengths[999]);
return 0;
}
}
Solution.java:13: error: no suitable method found for print(String,int) System.out.print("this is a debug message %d\n", lengths[999]); ^ method PrintStream.print(boolean) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(char) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(int) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(long) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(float) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(double) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(char[]) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(String) is not applicable (actual and formal argument lists differ in length) method PrintStream.print(Object) is not applicable (actual and formal argument lists differ in length) 1 error
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.printf("this is a debug message %d\n", lengths[999]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
System.out.printf("this is a debug message %d\n", lengths[999]);
return 0;
}
}
this is a debug message 0
this is a debug message 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
for (int i=0; i<S.length(); ++i) ++lengths[S[i]];
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
for (int i=0; i<S.length(); ++i) ++lengths[S[i]];
return 0;
}
}
Solution.java:14: error: array required, but String found for (int i=0; i<S.length(); ++i) ++lengths[S[i]]; ^ 1 error
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S[0];
for (int i=0; i<S.length(); ++i) ++lengths[S[i]];
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S[0];
for (int i=1; i<S.length(); ++i) {
++lengths[S[i]];
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S[0];
for (int i=1; i<S.length(); ++i) {
char c = S[i];
if (c==prev)
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S[0];
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S[i];
if (c==prev) ++L;
else {
++lengths[]
}
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S[0];
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S[i];
if (c==prev) ++L;
else {
++lengths[L];
L=0;
}
prev=c;
}
return 0;
}
}
Solution.java:14: error: array required, but String found char prev = S[0]; ^ Solution.java:17: error: array required, but String found char c = S[i]; ^ 2 errors
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S[i];
if (c==prev) ++L;
else {
++lengths[L];
L=0;
}
prev=c;
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
++lengths[L];
L=0;
}
prev=c;
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if ++lengths[L];
L=0;
}
prev=c;
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=0;
}
prev=c;
}
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=0;
}
prev=c;
}
for (int i=0; i<)
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=0;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=0;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", lengths[999]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=0;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=0: 1 i=1: 1
i=0: 2
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=1;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (c=='M') ++lengths[L];
L=1;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=1: 1 i=2: 1
i=1: 2
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (pre=='M') ++lengths[L];
L=1;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=1: 1 i=2: 1
i=1: 1 i=3: 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=1: 2 i=2: 1
i=1: 1 i=3: 1 i=4: 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[)
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
for (int i=0; i<K; ++i)
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
for (int i=0; i<K; ++i)
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
}
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
if ()
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
if (K<minL) return
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minL = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=1: 2 i=2: 1
i=1: 1 i=3: 1 i=4: 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAb = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minL = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove = 0;
for (int i=0; i<K; ++i)
if (lengths[i]>0) {
minAbove = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1;
for (int i=1; i<S.length(); ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove = 0;
for (int i=K; i<K; ++i)
if (lengths[i]>0) {
minAbove = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove = 0;
for (int i=K; i<K; ++i)
if (lengths[i]>0) {
minAbove = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove = 0;
for (int i=K; i<LS; ++i)
if (lengths[i]>0) {
minAbove = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove = 0, maxBelow=0;
for (int i=K; i<LS; ++i)
if (lengths[i]>0) {
minAbove = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i)
if (lengths[i]>0) {
minAbove = i;
break;
}
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { minAbove = i; break; }
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minL==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, LS = S.length();
for (int i=1; i<LS; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<LS; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove==0) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove==) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove-K < maxBelow) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove-K < K-maxBelow) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAboveK < K-maxBelow) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove>K) return K;
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove>K) {
return K;
}
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove>K) {
int re
return K;
}
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
if (minAbove>K) {
int res=0;
return K;
}
if (K<minL) return minL-K;
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
return K;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length();
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') ++lengths[L];
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (lengths[K]>0)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') ++lengths[L];
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest)
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L];
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L];
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K+1; i<longest; ++i) if (lengths[i]>0) { minAbove = i; break; }
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K+1; i<longest; ++i) res+=
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K+1; i<longest; ++i) res+=lengths[i]*(i-K);
return res;
}
for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K+1; i<longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
int minAbove=0, maxBelow=0;
for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
if (minAbove>K) {
int res=0;
for (int i=K+1; i<longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=1: 2 i=2: 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
if (minAbove>K) {
int res=0;
for (int i=K+1; i<longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
i=1: 2 i=2: 1
i=1: 1 i=3: 1 i=4: 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
System.out.printf("i=%d: %d\n", i, lengths[i]);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L]>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
longest=2 i=1: 2 i=2: 1
longest=1 i=1: 1 i=3: 1 i=4: 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (lengths[L>longest) longest=lengths[L];
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (lengths[L]>longest) longest=lengths[L]; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
longest=2 i=1: 2 i=2: 1
longest=4
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) res+=lengths[i]*(i-K);
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
res+=lengths[i]*(i-K);
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=)
res+=lengths[i]*(i-K);
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res+=lengths[i]*(i-K);
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res+=lengths[i];
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3:
// 7 ==> 1
//
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3:
// 7 ==> 1
// 8 ==> 2
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3:
// 7 ==> 1
// 8... ==> 2
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3:
// 7 ==> 1
// 8...11 ==> 2
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3:
// 7 ==> 1
// 8...11 ==> 2
//
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3:
// 7 ==> 1
// 8...11 ==> 2
// 12... ==> 3
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 7 ==> 1
// 8...11 ==> 2
// 12... ==> 3
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 7 ==> 1
// 8...11 ==> 2
// 12...15 ==> 3
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 7 ==> 1
// 8...11 ==> 2
// 12...15 ==> 3
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 7 ==> 1
// 8...11 ==> 2
// 12...15 ==> 3
// ...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 7 ==> 1
// 8...11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i];
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i] * ();
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
if (i<=K*2+1)
res += lengths[i] * (i/4);
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m=(i/4);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/4;
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 0;
}
}
longest=2 i=1: 2 i=2: 1
longest=4
// 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100000];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100002];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
// write your code in Java SE 8
int lengths[] = new int[100004];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
int L=1, N = S.length(), longest=0;
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
lengths[i+1]
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1]
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
// System.out.printf("this is a debug message %d\n", lengths[999]);
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=0; i<N; ++i) {
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=0; i<N; ++i) {
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
countL =
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
countL = K - lengths[]
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
countL = K - lengths[i]
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
countL = K - (lengths[i]
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
int countM = lengths[i]
int countL = K - countM;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here =
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i)
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++h
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++here;
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++here;
if (i<N && S.charAt(i)
}
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++here;
if (i<N && S.charAt(i)=='M') ++here;
if (here<res) res=here;
}
return res;
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
for (int i=0; i<100000; ++i)
if (lengths[i]>0)
System.out.printf("i=%d: %d\n", i, lengths[i]);
return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++here;
if (i<N && S.charAt(i)=='M') ++here;
if (here<res) res=here;
}
return res;
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
// for (int i=0; i<100000; ++i)
// if (lengths[i]>0)
// System.out.printf("i=%d: %d\n", i, lengths[i]);
// return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++here;
if (i<N && S.charAt(i)=='M') ++here;
if (here<res) res=here;
}
return res;
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
// for (int i=0; i<100000; ++i)
// if (lengths[i]>0)
// System.out.printf("i=%d: %d\n", i, lengths[i]);
// return 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");
import java.util.*;
class Solution {
public int solution(String S, int K) {
int L=1, N = S.length(), longest=0;
int lengths[] = new int[N+4];
char prev = S.charAt(0);
for (int i=1; i<N; ++i) {
char c = S.charAt(i);
if (c==prev) ++L;
else {
if (prev=='M') {
++lengths[L];
if (L>longest) longest=L;
}
L=1;
}
prev=c;
}
if (prev=='M') { ++lengths[L]; if (L>longest) longest=L; }
//System.out.printf("longest=%d\n", longest);
if (longest==K)
return 0;
if (longest>K) {
int res=0;
for (int i=K+1; i<=longest; ++i) {
int m = i/(K+1);
res += lengths[i] * m;
// K==3: // 3 1 3 1 3 1 3 1 3 1
// 4... 7 ==> 1
// 8... 11 ==> 2
// 12...15 ==> 3
// 16...19 ==> 4
}
return res;
}
lengths[0]=0;
int sum=0;
for (int i=0; i<N; ++i) {
char c = S.charAt(i);
if (c=='M') ++sum;
lengths[i+1] = sum;
}
int res = N+2;
for (int i=K; i<=N; ++i) {
int countM = lengths[i] - lengths[i-K];
int countL = K - countM;
int here = countL;
if (i>K && S.charAt(i-K-1)=='M') ++here;
if (i<N && S.charAt(i)=='M') ++here;
if (here<res) res=here;
}
return res;
// int minAbove=0, maxBelow=0;
// for (int i=K; i<N; ++i) if (lengths[i]>0) { minAbove = i; break; }
// for (int i=K; i>0; --i) if (lengths[i]>0) { maxBelow = i; break; }
// for (int i=0; i<100000; ++i)
// if (lengths[i]>0)
// System.out.printf("i=%d: %d\n", i, lengths[i]);
// return 0;
}
}
The solution obtained perfect score.