You are given a string S of length N consisting of characters 'a' and 'b' with additional empty gaps represented by '?'. Your task is to replace every such gap with either an 'a' character or a 'b' character so that the longest fragment of S, consisting only of 'a' characters or 'b' characters, is as short as possible.
For example, for S = "aa??bbb", if you replace "??" with "aa", the longest fragment consisting of equal characters will have length 4: "aaaabbb". You can obtain a better result by replacing "??" with "ba", resulting in "aababbb". Then the longest fragment consisting of equal characters will have length 3.
Write a function:
fun solution(S: String): Int
that, given a string S of length N, returns the minimum possible length of the longest fragment of S consisting of equal characters after replacing all "?" characters with letters.
Examples:
1. Given S = "aa??bbb", your function should return 3, as explained above.
2. Given S = "a?b?aa?b?a", your function should return 2. Question marks can be replaced in the following way: "aabbaabbaa".
3. Given S = "??b??", your function should return 1.
4. Given S = "aa?b?aa", your function should return 3.
Write an efficient algorithm for the following assumptions:
- string S is made only of the following characters: 'a', 'b' and/or '?';
- N is an integer within the range [1..100,000].
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min()
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > a)
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
}
return Math.min(minA,minB)
}
solution.kt:32:23: error: a type annotation is required on a value parameter fun calculateAandBMin(S):Int{ ^ solution.kt:37:7: error: cannot choose among the following candidates without completing type inference: @HidesMembers public inline fun <T> Iterable<???>.forEach(action: (???) -> Unit): Unit defined in kotlin.collections @HidesMembers public inline fun <K, V> Map<out ???, ???>.forEach(action: (Map.Entry<???, ???>) -> Unit): Unit defined in kotlin.collections S.forEach{ ^ solution.kt:38:12: error: unresolved reference: it if(it == 'a') ^ solution.kt:44:12: error: unresolved reference: it if(it == 'b') ^
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>0,,,minB=>-1 minA=>0,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1
minA=>0,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1
minA=>0,,,minB=>-1 minA=>0,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = -1
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>1,,,minB=>-1 minA=>1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1
minA=>1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1
minA=>1,,,minB=>-1 minA=>1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1 minA=>-1,,,minB=>-1
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum =
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = -1
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = 0
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = 0
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = 0
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
function result: 0
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
va
S.forEach{
if(it == 'a')
aNum ++
else
aNum = 0
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a')
aNum ++
else
aNum = 0
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a')
aNum ++
else
aNum = 0
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
aNum = 0
}
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
aNum = 0
continueA = false
}
if(minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
aNum = 0
continueA = false
}
if(continueA)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
aNum = 0
continueA = false
}
if(continueA && minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
aNum = 0
continueA = false
}
if(continueA && minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0
function result: 0
minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0 minA=>1,,,minB=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
aNum = 0
continueA = false
}
if(!continueA && minA > aNum)
minA = aNum
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA ){
minA = aNum
aNum = 0
}
if(it == 'b')
bNum ++
else
bNum = 0
if(minB > bNum)
minB = bNum
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA ){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB ){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA ){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB ){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>2147483647,,,minB=>0 minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>1 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>1 minA=>0,,,minB=>0
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>1 minA=>0,,,minB=>0 minA=>0,,,minB=>0
function result: 0
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>3,,,minB=>0 minA=>3,,,minB=>0 minA=>3,,,minB=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA &&){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB ){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA && minA > aNum){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB ){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA && minA > aNum){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>2147483647,,,minB=>0 minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
function result: 0
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>3,,,minB=>0 minA=>3,,,minB=>0 minA=>3,,,minB=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA && minA > aNum){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
}
if(!continueA && minA > aNum){
minA = aNum
aNum = 0
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
if(!continueA && minA > aNum){
minA = aNum
aNum = 0
}
continueA = false
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
continueA = true
}else{
continueA = false
if(!continueA && minA > aNum){
minA = aNum
aNum = 0
}
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
}
if(it == 'b'){
bNum ++
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
bNum ++
}
if(it == 'b'){
continueB = true
}else{
continueB = false
}
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if(!continueB && minB > bNum){
minB = bNum
bNum = 0
}
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
bNum ++
}
if(it == 'b'){
continueB = true
}else{
continueB = false
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if( minB > bNum){
minB = bNum
bNum = 0
}
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
bNum ++
}
if(it == 'b'){
continueB = true
}else{
continueB = false
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if( minB > bNum){
minB = bNum
bNum = 0
}
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
bNum ++
}
// if(it == 'b'){
// continueB = true
// }else{
// continueB = false
// }
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>2147483647,,,minB=>0 minA=>1,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0 minA=>0,,,minB=>0
function result: 0
minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>2147483647,,,minB=>0 minA=>3,,,minB=>0 minA=>3,,,minB=>0 minA=>3,,,minB=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if( minB > bNum){
minB = bNum
bNum = 0
}
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
bNum ++
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if( minB > bNum){
minB = bNum
bNum = 0
}
}else{
if( minA > aNum){
minA = aNum
aNum = 0
}
bNum ++
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if( minB > bNum){
minB = bNum
bNum = 0
}
}else{
bNum ++
if( minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if( minB > bNum){
minB = bNum
bNum = 0
}
}else{
bNum ++
if( minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= -1&& minB > bNum){
minB = bNum
bNum = -1
}
}else{
bNum ++
if( minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
// var continueA = false
// var continueB = false
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= -1 && minB > bNum){
minB = bNum
bNum = -1
}
}else{
bNum ++
if( aNum != -1 &&minA > aNum){
minA = aNum
aNum = -1
}
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647
minA=>2147483647,,,minB=>2147483647 minA=>0,,,minB=>2147483647 minA=>0,,,minB=>2147483647 minA=>0,,,minB=>2147483647 minA=>0,,,minB=>2 minA=>0,,,minB=>2 minA=>0,,,minB=>2 minA=>0,,,minB=>2 minA=>0,,,minB=>2 minA=>0,,,minB=>2
minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2 minA=>1,,,minB=>2
function result: 0
minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>0 minA=>2,,,minB=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = -1
var bNum = -1
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= -1 && minB > bNum){
minB = bNum
bNum = -1
}
}else{
bNum ++
if( aNum != -1 &&minA > aNum){
minA = aNum
aNum = -1
}
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>2147483647
minA=>2147483647,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>2147483647 minA=>1,,,minB=>3 minA=>1,,,minB=>3 minA=>1,,,minB=>3 minA=>1,,,minB=>3 minA=>1,,,minB=>3 minA=>1,,,minB=>3
minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>2147483647 minA=>2,,,minB=>3 minA=>2,,,minB=>3
function result: 1
minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>2147483647,,,minB=>2147483647 minA=>3,,,minB=>2147483647 minA=>3,,,minB=>1 minA=>3,,,minB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB},,,")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB},,,aNum=>${aNum},,,bNum=>${bNum}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>4 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>5
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>1,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>1,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>1,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>1,,,minB=>3,,,aNum=>1,,,bNum=>0 minA=>1,,,minB=>3,,,aNum=>2,,,bNum=>0 minA=>1,,,minB=>3,,,aNum=>2,,,bNum=>1 minA=>1,,,minB=>3,,,aNum=>2,,,bNum=>2 minA=>1,,,minB=>3,,,aNum=>2,,,bNum=>3 minA=>1,,,minB=>3,,,aNum=>3,,,bNum=>3
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>2,,,minB=>3,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>3,,,aNum=>2,,,bNum=>0
function result: 1
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>3,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>3,,,minB=>1,,,aNum=>2,,,bNum=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB},,,aNum=>${aNum},,,bNum=>${bNum}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB},,,aNum=>${aNum},,,bNum=>${bNum}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("minA=>${minA},,,minB=>${minB},,,aNum=>${aNum},,,bNum=>${bNum}")
}
return Math.min(minA,minB)
}
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>4,,,bNum=>0 minA=>4,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>4,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>4,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>4 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>1,,,minB=>1,,,aNum=>0,,,bNum=>1 minA=>1,,,minB=>1,,,aNum=>0,,,bNum=>2 minA=>1,,,minB=>1,,,aNum=>0,,,bNum=>3 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>4 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>5
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>5,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>6,,,bNum=>1 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>2 minA=>2,,,minB=>1,,,aNum=>5,,,bNum=>2 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>2 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>2 minA=>2,,,minB=>1,,,aNum=>5,,,bNum=>2 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>0 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>1 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>2 minA=>2,,,minB=>1,,,aNum=>3,,,bNum=>3 minA=>2,,,minB=>1,,,aNum=>4,,,bNum=>3 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>2,,,minB=>2,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>2,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2,,,aNum=>3,,,bNum=>0 minA=>2,,,minB=>2,,,aNum=>3,
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>3,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>3,,,minB=>1,,,aNum=>2,,,bNum=>0 minA=>3,,,minB=>1,,,aNum=>3,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>3,,,minB=>2,,,aNum=>1,,,bNum=>0 minA=>3,,,minB=>2,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>2,,,minB=>2,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>2,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2,,,aNum=>3,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>2 minA=>2,,,minB=>2147483647,,,aNum=>0,,,bNum=>3 minA=>2,,,minB=>3,,,aNum=>1,,,bNum=>0 minA=>2,,,minB=>3,,,aNum=>2,,,bNum=>0
function result: 1
minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>4,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>5,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>6,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647,,,aNum=>3,,,bNum=>0 minA=>3,,,minB=>2147483647,,,aNum=>0,,,bNum=>1 minA=>3,,,minB=>1,,,aNum=>1,,,bNum=>0 minA=>3,,,minB=>1,,,aNum=>2,,,bNum=>0
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else{ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println(",,,aNum=>${aNum},,,bNum=>${bNum}")
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("aNum=>${aNum},,,bNum=>${bNum}")
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("aNum=>${aNum},,,bNum=>${bNum}")
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647 aNum=>0,,,bNum=>2 minA=>2,,,minB=>2147483647 aNum=>0,,,bNum=>3 minA=>2,,,minB=>2147483647
aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>0,,,bNum=>1 minA=>1,,,minB=>2147483647 aNum=>0,,,bNum=>1 minA=>1,,,minB=>2147483647 aNum=>1,,,bNum=>0 minA=>1,,,minB=>1 aNum=>2,,,bNum=>0 minA=>1,,,minB=>1 aNum=>2,,,bNum=>0 minA=>1,,,minB=>1 aNum=>2,,,bNum=>1 minA=>1,,,minB=>1 aNum=>2,,,bNum=>1 minA=>1,,,minB=>1 aNum=>3,,,bNum=>1 minA=>1,,,minB=>1
aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647 aNum=>0,,,bNum=>1 minA=>2,,,minB=>2147483647 aNum=>1,,,bNum=>0 minA=>2,,,minB=>1 aNum=>2,,,bNum=>0 minA=>2,,,minB=>1
function result: 2147483647
aNum=>1,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>2,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>3,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>3,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>4,,,bNum=>0 minA=>2147483647,,,minB=>2147483647 aNum=>5,,,bNum=>0 minA=>2147483647,,,minB=>2147483647
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("aNum=>${aNum},,,bNum=>${bNum}")
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("aNum=>${aNum},,,minA=>${bNum}")
println("minA=>${minA},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 &&minA > aNum){
minA = aNum
aNum = 0
}
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>1,,,minB=>1 aNum=>2,,,minA=>1 bNum=>1,,,minB=>1 aNum=>3,,,minA=>1 bNum=>1,,,minB=>1
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1
function result: 2147483647
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
aNum = 0
}
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
bNum = 0
}
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1
function result: 2147483647
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if( aNum != 0 && minA > aNum){
minA = aNum
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)
}
aNum=>0,,,minA=>2 bNum=>3,,,minB=>3
aNum=>1,,,minA=>1 bNum=>0,,,minB=>1
aNum=>2,,,minA=>2 bNum=>0,,,minB=>1
function result: 5
aNum=>5,,,minA=>5 bNum=>0,,,minB=>2147483647
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)
}
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 Final aNum=>0,,,minA=>2 Final bNum=>3,,,minB=>3
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1
function result: 5
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 Final aNum=>5,,,minA=>5 Final bNum=>0,,,minB=>2147483647
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)
}
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 Final aNum=>0,,,minA=>2 Final bNum=>3,,,minB=>3
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>1 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>2,,,minA=>1 bNum=>0,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>1,,,minA=>1 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1
function result: 5
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 Final aNum=>5,,,minA=>5 Final bNum=>0,,,minB=>2147483647
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)+1
}
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>3,,,minB=>2147483647 Final aNum=>0,,,minA=>4 Final bNum=>3,,,minB=>3 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>3,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>4,,,minB=>2147483647 Final aNum=>0,,,minA=>3 Final bNum=>4,,,minB=>4 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>0,,,minA=>1 bNum=>2,,,minB=>1 aNum=>0,,,minA=>1 bNum=>3,,,minB=>1 Final aNum=>0,,,minA=>1 Final bNum=>3,,,minB=>1 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>4,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>5,,,minB=>2147483647 Final aNum=>0,,,minA=>2 Final bNum=>5,,,minB=>5
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>4,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>4,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>0,,,minA=>2 bNum=>3,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>2 aN
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>1 aNum=>2,,,minA=>3 bNum=>0,,,minB=>1 aNum=>3,,,minA=>3 bNum=>0,,,minB=>1 Final aNum=>3,,,minA=>3 Final bNum=>0,,,minB=>1 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>2 aNum=>2,,,minA=>3 bNum=>0,,,minB=>2 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>2 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>2 aNum=>2,,,minA=>2 bNum=>0,,,minB=>2 aNum=>3,,,minA=>2 bNum=>0,,,minB=>2 Final aNum=>3,,,minA=>2 Final bNum=>0,,,minB=>2 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>3 aNum=>2,,,minA=>2 bNum=>0,,,minB=>3 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>3
function result: 2
aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>6,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 Final aNum=>6,,,minA=>6 Final bNum=>0,,,minB=>2147483647 aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>1 aNum=>2,,,minA=>3 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
s
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("===============calculate=>${S}")
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.min(minA,minB)+1
}
=============== calculate=>aaaabbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>3,,,minB=>2147483647 Final aNum=>0,,,minA=>4 Final bNum=>3,,,minB=>3 =============== calculate=>aaabbbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>3,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>4,,,minB=>2147483647 Final aNum=>0,,,minA=>3 Final bNum=>4,,,minB=>4 =============== calculate=>aababbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>0,,,minA=>1 bNum=>2,,,minB=>1 aNum=>0,,,minA=>1 bNum=>3,,,minB=>1 Final aNum=>0,,,minA=>1 Final bNum=>3,,,minB=>1 =============== calculate=>aabbbbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>4,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>5,,,minB=>2147483647 Final aNum=>0,,,minA=>2 Final bNum=>5,,,minB=>5
=============== calculate=>aabaaaabaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>4,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1 =============== calculate=>aabaaaabba =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>4,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1 =============== calculate=>aabaaabbaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1 =============== calculate=>aabaaabbba =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>0,,,minA=>2 bNum=>3,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1 =============== calc
=============== calculate=>aaabaaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>1 aNum=>2,,,minA=>3 bNum=>0,,,minB=>1 aNum=>3,,,minA=>3 bNum=>0,,,minB=>1 Final aNum=>3,,,minA=>3 Final bNum=>0,,,minB=>1 =============== calculate=>aaabbaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>2 aNum=>2,,,minA=>3 bNum=>0,,,minB=>2 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>2 =============== calculate=>aabbaaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>2 aNum=>2,,,minA=>2 bNum=>0,,,minB=>2 aNum=>3,,,minA=>2 bNum=>0,,,minB=>2 Final aNum=>3,,,minA=>2 Final bNum=>0,,,minB=>2 =============== calculate=>aabbbaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>3 aNum=>2,,,minA=>2 bNum=>0,,,minB=>3 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>3
function result: 2
=============== calculate=>aaaaaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>6,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 Final aNum=>6,,,minA=>6 Final bNum=>0,,,minB=>2147483647 =============== calculate=>aaabaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>1 aNum=>2,,,minA=>3 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.m(minA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最小值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.max(minA,minB)+1
}
=============== calculate=>aaaabbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>4 bNum=>3,,,minB=>2147483647 Final aNum=>0,,,minA=>4 Final bNum=>3,,,minB=>3 =============== calculate=>aaabbbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>3,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>4,,,minB=>2147483647 Final aNum=>0,,,minA=>3 Final bNum=>4,,,minB=>4 =============== calculate=>aababbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>1 bNum=>1,,,minB=>1 aNum=>0,,,minA=>1 bNum=>2,,,minB=>1 aNum=>0,,,minA=>1 bNum=>3,,,minB=>1 Final aNum=>0,,,minA=>1 Final bNum=>3,,,minB=>1 =============== calculate=>aabbbbb =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>4,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>5,,,minB=>2147483647 Final aNum=>0,,,minA=>2 Final bNum=>5,,,minB=>5
=============== calculate=>aabaaaabaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>4,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1 =============== calculate=>aabaaaabba =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>4,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1 =============== calculate=>aabaaabbaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1 =============== calculate=>aabaaabbba =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 aNum=>2,,,minA=>2 bNum=>0,,,minB=>1 aNum=>3,,,minA=>2 bNum=>0,,,minB=>1 aNum=>0,,,minA=>2 bNum=>1,,,minB=>1 aNum=>0,,,minA=>2 bNum=>2,,,minB=>1 aNum=>0,,,minA=>2 bNum=>3,,,minB=>1 aNum=>1,,,minA=>2 bNum=>0,,,minB=>1 Final aNum=>1,,,minA=>1 Final bNum=>0,,,minB=>1 =============== calc
=============== calculate=>aaabaaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>1 aNum=>2,,,minA=>3 bNum=>0,,,minB=>1 aNum=>3,,,minA=>3 bNum=>0,,,minB=>1 Final aNum=>3,,,minA=>3 Final bNum=>0,,,minB=>1 =============== calculate=>aaabbaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>2 aNum=>2,,,minA=>3 bNum=>0,,,minB=>2 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>2 =============== calculate=>aabbaaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>2 aNum=>2,,,minA=>2 bNum=>0,,,minB=>2 aNum=>3,,,minA=>2 bNum=>0,,,minB=>2 Final aNum=>3,,,minA=>2 Final bNum=>0,,,minB=>2 =============== calculate=>aabbbaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>1,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>2,,,minB=>2147483647 aNum=>0,,,minA=>2 bNum=>3,,,minB=>2147483647 aNum=>1,,,minA=>2 bNum=>0,,,minB=>3 aNum=>2,,,minA=>2 bNum=>0,,,minB=>3 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>3
function result: -2147483648
=============== calculate=>aaaaaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>4,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>5,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>6,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 Final aNum=>6,,,minA=>6 Final bNum=>0,,,minB=>2147483647 =============== calculate=>aaabaa =============== aNum=>1,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>2,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>3,,,minA=>2147483647 bNum=>0,,,minB=>2147483647 aNum=>0,,,minA=>3 bNum=>1,,,minB=>2147483647 aNum=>1,,,minA=>3 bNum=>0,,,minB=>1 aNum=>2,,,minA=>3 bNum=>0,,,minB=>1 Final aNum=>2,,,minA=>2 Final bNum=>0,,,minB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最ㄉ(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var minA = Int.MAX_VALUE
var minB = Int.MAX_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.max(minA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var minA = Int.MIN_VALUE
var minB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && minA > aNum){
minA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,minA=>${minA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && minA > aNum){
minA = aNum
}
println("Final aNum=>${aNum},,,minA=>${minA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.max(minA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var minB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && minB > bNum){
minB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA > aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,minB=>${minB}")
}
if(bNum!= 0 && minB > bNum){
minB = bNum
}
if(aNum != 0 && maxA > aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,minB=>${minB}")
return Math.max(maxA,minB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB > bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA > aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB > bNum){
maxB = bNum
}
if(aNum != 0 && maxA > aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB > bNum){
maxB = bNum
}
if(aNum != 0 && maxA > aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)+1
}
=============== calculate=>aaaabbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>4,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>3,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>4 Final bNum=>3,,,maxB=>-2147483648 =============== calculate=>aaabbbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>3,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>4,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>3 Final bNum=>4,,,maxB=>-2147483648 =============== calculate=>aababbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>1 Final aNum=>0,,,maxA=>2 Final bNum=>3,,,maxB=>1 =============== calculate=>aabbbbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>4,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>5,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>2 Final bNum=>5,,,maxB=>-2147483648
=============== calculate=>aabaaaabaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>4,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>1 aNum=>1,,,maxA=>4 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>4 bNum=>0,,,maxB=>1 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>1 =============== calculate=>aabaaaabba =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>4,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>2,,,maxB=>1 aNum=>1,,,maxA=>4 bNum=>0,,,maxB=>2 Final aNum=>1,,,maxA=>1 Final bNum=>0,,,maxB=>2 =============== calculate=>aabaaabbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>1 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>2 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>2 =============== calculate=>aabaaabbba =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>3,,,maxB=>1 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>3 Final aNum=>1,,,maxA=>1 Final bNum=>0,,,maxB=>3
=============== calculate=>aaabaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>3 bNum=>0,,,maxB=>1 Final aNum=>3,,,maxA=>3 Final bNum=>0,,,maxB=>1 =============== calculate=>aaabbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>2 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>2 =============== calculate=>aabbaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>2 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>2 Final aNum=>3,,,maxA=>2 Final bNum=>0,,,maxB=>2 =============== calculate=>aabbbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>3 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>3 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>3
function result: -2147483647
=============== calculate=>aaaaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>4,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>5,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>6,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 Final aNum=>6,,,maxA=>-2147483648 Final bNum=>0,,,maxB=>-2147483648 =============== calculate=>aaabaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>1 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB > bNum){
maxB = bNum
}
if(aNum != 0 && maxA > aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB <>> bNum){
maxB = bNum
}
if(aNum != 0 && maxA > aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)+1
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)+1
}
=============== calculate=>aaaabbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>4,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>3,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>4 Final bNum=>3,,,maxB=>3 =============== calculate=>aaabbbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>3,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>4,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>3 Final bNum=>4,,,maxB=>4 =============== calculate=>aababbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>1 Final aNum=>0,,,maxA=>2 Final bNum=>3,,,maxB=>3 =============== calculate=>aabbbbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>4,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>5,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>2 Final bNum=>5,,,maxB=>5
=============== calculate=>aabaaaabaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>4,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>1 aNum=>1,,,maxA=>4 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>4 bNum=>0,,,maxB=>1 Final aNum=>2,,,maxA=>4 Final bNum=>0,,,maxB=>1 =============== calculate=>aabaaaabba =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>4,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>2,,,maxB=>1 aNum=>1,,,maxA=>4 bNum=>0,,,maxB=>2 Final aNum=>1,,,maxA=>4 Final bNum=>0,,,maxB=>2 =============== calculate=>aabaaabbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>1 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>2 Final aNum=>2,,,maxA=>3 Final bNum=>0,,,maxB=>2 =============== calculate=>aabaaabbba =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>3,,,maxB=>1 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>3 Final aNum=>1,,,maxA=>3 Final bNum=>0,,,maxB=>3
=============== calculate=>aaabaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>3 bNum=>0,,,maxB=>1 Final aNum=>3,,,maxA=>3 Final bNum=>0,,,maxB=>1 =============== calculate=>aaabbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>2 Final aNum=>2,,,maxA=>3 Final bNum=>0,,,maxB=>2 =============== calculate=>aabbaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>2 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>2 Final aNum=>3,,,maxA=>3 Final bNum=>0,,,maxB=>2 =============== calculate=>aabbbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>3 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>3 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>3
function result: 4
=============== calculate=>aaaaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>4,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>5,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>6,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 Final aNum=>6,,,maxA=>6 Final bNum=>0,,,maxB=>-2147483648 =============== calculate=>aaabaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>1 Final aNum=>2,,,maxA=>3 Final bNum=>0,,,maxB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
println("Final aNum=>${aNum},,,maxA=>${maxA}")
println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
=============== calculate=>aaaabbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>4,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>4 bNum=>3,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>4 Final bNum=>3,,,maxB=>3 =============== calculate=>aaabbbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>3,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>4,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>3 Final bNum=>4,,,maxB=>4 =============== calculate=>aababbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>1 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>1 Final aNum=>0,,,maxA=>2 Final bNum=>3,,,maxB=>3 =============== calculate=>aabbbbb =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>4,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>5,,,maxB=>-2147483648 Final aNum=>0,,,maxA=>2 Final bNum=>5,,,maxB=>5
=============== calculate=>aabaaaabaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>4,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>1 aNum=>1,,,maxA=>4 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>4 bNum=>0,,,maxB=>1 Final aNum=>2,,,maxA=>4 Final bNum=>0,,,maxB=>1 =============== calculate=>aabaaaabba =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>4,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>4 bNum=>2,,,maxB=>1 aNum=>1,,,maxA=>4 bNum=>0,,,maxB=>2 Final aNum=>1,,,maxA=>4 Final bNum=>0,,,maxB=>2 =============== calculate=>aabaaabbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>1 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>2 Final aNum=>2,,,maxA=>3 Final bNum=>0,,,maxB=>2 =============== calculate=>aabaaabbba =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>1 aNum=>0,,,maxA=>3 bNum=>3,,,maxB=>1 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>3 Final aNum=>1,,,maxA=>3 Final bNum=>0,,,maxB=>3
=============== calculate=>aaabaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>3,,,maxA=>3 bNum=>0,,,maxB=>1 Final aNum=>3,,,maxA=>3 Final bNum=>0,,,maxB=>1 =============== calculate=>aaabbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>2,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>2 Final aNum=>2,,,maxA=>3 Final bNum=>0,,,maxB=>2 =============== calculate=>aabbaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>2 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>2 aNum=>3,,,maxA=>2 bNum=>0,,,maxB=>2 Final aNum=>3,,,maxA=>3 Final bNum=>0,,,maxB=>2 =============== calculate=>aabbbaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>1,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>2,,,maxB=>-2147483648 aNum=>0,,,maxA=>2 bNum=>3,,,maxB=>-2147483648 aNum=>1,,,maxA=>2 bNum=>0,,,maxB=>3 aNum=>2,,,maxA=>2 bNum=>0,,,maxB=>3 Final aNum=>2,,,maxA=>2 Final bNum=>0,,,maxB=>3
function result: 3
=============== calculate=>aaaaaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>4,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>5,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>6,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 Final aNum=>6,,,maxA=>6 Final bNum=>0,,,maxB=>-2147483648 =============== calculate=>aaabaa =============== aNum=>1,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>2,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>3,,,maxA=>-2147483648 bNum=>0,,,maxB=>-2147483648 aNum=>0,,,maxA=>3 bNum=>1,,,maxB=>-2147483648 aNum=>1,,,maxA=>3 bNum=>0,,,maxB=>1 aNum=>2,,,maxA=>3 bNum=>0,,,maxB=>1 Final aNum=>2,,,maxA=>3 Final bNum=>0,,,maxB=>1
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
println("aNum=>${aNum},,,maxA=>${maxA}")
println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
=============== calculate=>aaaabbb =============== =============== calculate=>aaabbbb =============== =============== calculate=>aababbb =============== =============== calculate=>aabbbbb ===============
=============== calculate=>aabaaaabaa =============== =============== calculate=>aabaaaabba =============== =============== calculate=>aabaaabbaa =============== =============== calculate=>aabaaabbba =============== =============== calculate=>aabbaaabaa =============== =============== calculate=>aabbaaabba =============== =============== calculate=>aabbaabbaa =============== =============== calculate=>aabbaabbba =============== =============== calculate=>abbaaaabaa =============== =============== calculate=>abbaaaabba =============== =============== calculate=>abbaaabbaa =============== =============== calculate=>abbaaabbba =============== =============== calculate=>abbbaaabaa =============== =============== calculate=>abbbaaabba =============== =============== calculate=>abbbaabbaa =============== =============== calculate=>abbbaabbba ===============
=============== calculate=>aaabaaa =============== =============== calculate=>aaabbaa =============== =============== calculate=>aabbaaa =============== =============== calculate=>aabbbaa ===============
function result: 3
=============== calculate=>aaaaaa =============== =============== calculate=>aaabaa ===============
function result: 1
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
['aaa?aa']
['?']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
function result: 3
function result: 1
['aaa?aa']
['?']
['???????????????????????????????????????????????????????????????????????????????????????????????????a']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
function result: 3
function result: 1
['aaa?aa']
['?']
['???????????????????????????????????????????????????????????????????????????????????????????????????a']
// you can also use imports, for example:
// import kotlin.math.*
// you can write to stdout for debugging purposes, e.g.
// println("this is a debug message")
fun solution(S: String): Int {
if(!S.contains("a") && !S.contains("b"))
return 1
return calculateReplaceQuestionMark(S)
}
fun calculateReplaceQuestionMark(S:String):Int{
if(S.contains("?"))
return Math.min(
calculateReplaceQuestionMarkToA(S),
calculateReplaceQuestionMarkToB(S))
return calculateAandBMin(S)
}
fun calculateReplaceQuestionMarkToA(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","a"))
}
fun calculateReplaceQuestionMarkToB(S:String):Int{
return calculateReplaceQuestionMark(S.replaceFirst("?","b"))
}
// 計算A與B的最大值(沒有問號)
fun calculateAandBMin(S:String):Int{
// println("=============== calculate=>${S} ===============")
var aNum = 0
var bNum = 0
var maxA = Int.MIN_VALUE
var maxB = Int.MIN_VALUE
S.forEach{
if(it == 'a'){
aNum ++
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
bNum = 0
}else if(it=='b'){ // 是b
bNum ++
if( aNum != 0 && maxA < aNum){
maxA = aNum
}
aNum = 0
}
// println("aNum=>${aNum},,,maxA=>${maxA}")
// println("bNum=>${bNum},,,maxB=>${maxB}")
}
if(bNum!= 0 && maxB < bNum){
maxB = bNum
}
if(aNum != 0 && maxA < aNum){
maxA = aNum
}
// println("Final aNum=>${aNum},,,maxA=>${maxA}")
// println("Final bNum=>${bNum},,,maxB=>${maxB}")
return Math.max(maxA,maxB)
}
The following issues have been detected: timeout errors.
Segments of 'a' or 'b' of equal lengths separated by question marks. N <= 20.
Tests containing long sequences of letters. N <= 200. Score x 2.
Killed. Hard limit reached: 6.000 sec.
Large random test cases. N = 50,000.
running time: 0.568 sec., time limit: 0.304 sec.
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Perfomance tests group. Score x 3.
running time: 0.532 sec., time limit: 0.464 sec.
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at java.util.Arrays.copyOfRange(Arrays.java:3664) at java.lang.String.<init>(String.java:207) at java.lang.StringBuilder.toString(StringBuilder.java:407) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst(StringsJVM.kt:92) at kotlin.text.StringsKt__StringsJVMKt.replaceFirst$default(StringsJVM.kt:90) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25) at SolutionKt.calculateReplaceQuestionMark(solution.kt:18) at SolutionKt.calculateReplaceQuestionMarkToA(solution.kt:25)