Продолжайте в Scala для петель - PullRequest
0 голосов
/ 09 июля 2020

Как преобразовать приведенный ниже код Java в scala и использовать continue in для l oop, эта программа удаляет минимальное количество дополнительных закрытых скобок в данной строке

input : lee(t(c)o)de)
output : leet(t(c)o)de

public String minRemoveToMakeValid(String s){
StringBuilder sb =new StringBuilder();
in open =0;

for (char c : s.toCharArray()){
if(c == '('){
open++
}
else if(c == ')'){
if(open == 0) continue;
open --;
}

sb.append(c)
}

return sb
}

https://leetcode.com/problems/minimum-remove-to-make-valid-parentheses/

Ответы [ 2 ]

1 голос
/ 09 июля 2020
import util.control.Breaks._

val searchMe = "peter piper picked a peck of pickled peppers"
var numPs = 0
for (i <- 0 until searchMe.length) {
  breakable {
    if (searchMe.charAt(i) != 'p') {
      break  // break out of the 'breakable', continue the outside loop
    } else {
      numPs += 1
    }
  }
}
println("Found " + numPs + " p's in the string.")

Попробуйте: https://scastie.scala-lang.org/R9sr95WESLyiKamCHHUVdQ

0 голосов
/ 09 июля 2020

Я могу заставить его работать, используя приведенный ниже код

def minRemoveToMakeValid(s: String): String = {
    var open = 0
    val sb = new StringBuilder
    for (c <- s.toCharArray) {
      breakable {
        if (c == '(') open += 1
        else if (c == ')') {
          if (open == 0)break
          open -= 1
        }
        sb.append(c)
      }

    }

    var result = new StringBuilder()
    for(i<-sb.length()-1 to 0 by -1)
    {
      breakable{
        open-=1
        if(sb.charAt(i) == '(' && open >0) break
          result.append(sb.charAt(i))
      }
    }

   result.reverse.toString()
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...