object ValidParenthesisString { def checkValidString(s: String): Boolean = { var lo = 0 var hi = 0 for (char <- s) { if (char == '(') { lo += 1 hi += 1 } else if (char == ')') { if (lo > 0) lo -= 1 hi -= 1 } else { // char == '*' if (lo > 0) lo -= 1 hi += 1 } if (hi < 0) return false } lo == 0 } def main(args: Array[String]): Unit = { // Example usage val input1 = "()" // Valid val input2 = "(*)" // Valid val input3 = "(*))" // Valid val input4 = "(((*)" // Valid val input5 = "(()*))" // Valid val input6 = "(()*()(" // Invalid println(s"Is '$input1' valid? ${checkValidString(input1)}") println(s"Is '$input2' valid? ${checkValidString(input2)}") println(s"Is '$input3' valid? ${checkValidString(input3)}") println(s"Is '$input4' valid? ${checkValidString(input4)}") println(s"Is '$input5' valid? ${checkValidString(input5)}") println(s"Is '$input6' valid? ${checkValidString(input6)}") } }