Senior
/*Берілген жол бар, жақшалардың дұрыс көрсетілуін тексеру үшін функцияны жүзеге асыру қажет. Әр ашылатын жақша сәйкес жабылатын жақшаға сәйкес болуы керек. Ашылатын және жабылатын жақшалар дұрыс тәртіпте болуы керек. Жақшалардың түрлері: "{", "}", "(", ")", "[", "]". Кіріс: "([]){}[(()())()]" Нәтиже: шын Кіріс: "[(])" Нәтиже: жалған Өйткені 2 және 3-жақшалар дұрыс көрсетілмеген, жабылатын ']' бұрын пайда болады, жабылатын '(' алдында. */ public boolean check(String s){ Deque<Character> stack = new ArrayDeque<>(); Map<Character, Character> map = Map.of( ')', '(', ']', '[', '}', '{' ); // ((( for( char c : s.toCharArray()){ if(map.containsValue(c)){ stack.push(c); } else if(map.containsKey(c)){ if( stack.isEmpty() || stack.pop() != map.get(c)){ return false; } } } return stack.isEmpty(); }
sobes.tech AI
Ҷавоб аз AI
Пешниҳоди функсия дар Java дурустии ҷойгиршавии парчамҳоро бо ёрии стек ва харитаи парчамҳои пӯшида ба онҳое, ки кушода шудаанд, санҷида мебарояд.
Аслии асосӣ:
- Вақте ки бо парчами кушода рӯбарӯ мешавем, онро ба стек мегузорем.
- Вақте ки бо парчами пӯшида рӯбарӯ мешавем, санҷида мешавад, ки оё унсури болоии стек бо он мувофиқат мекунад.
- Агар мувофиқат накунад ё стек холӣ бошад, false бармегардонад.
- Дар охир, санҷида мешавад, ки стек холӣ аст (ҳама парчамҳо пӯшида шудаанд).
Маслиҳат барои иҷро дар Kotlin:
fun check(s: String): Boolean {
val stack = ArrayDeque<Char>()
val map = mapOf(')' to '(', ']' to '[', '}' to '{')
for (c in s) {
if (c in map.values) {
stack.push(c)
} else if (c in map.keys) {
if (stack.isEmpty() || stack.pop() != map[c]) {
return false
}
}
}
return stack.isEmpty()
}
Ин код дуруст коркарди парчамҳои дарунсохт ва пайдарпайро дорад, масалан:
println(check("([]){}[(()())()]") ) // true
println(check("[(])")) // false