Цифры числа располагаются в стопке последовательно? ⇐ JAVA
-
Anonymous
Цифры числа располагаются в стопке последовательно?
Для получения стека чисел и целого числа я хочу написать метод Java, который возвращает true, если все цифры числа появляются в виде последовательности в стеке, когда стек можно просмотреть сверху вниз или снизу. вверх.
Я написал код, но он дает частично плохие результаты.
Например, для стека [1,2,3], когда 3 является вершиной, а число 12, это дает неправильный результат. Но для [3,2,1], где 1 — вершина, это дает правильный результат. Проблема где-то в переворачивании стека. Оператор «или» не работает.
Что мне здесь не хватает?
Комментарий: StackX — это класс, который я написал. Это стек чисел с общими операциями: push, pop, peek, isEmpty, isFull и getSize.
Мой код:
// возвращаем строку со значениями стека общедоступная статическая строка StackValues (StackX S) { Строка seq = ""; в то время как (!S.isEmpty()) { длинный л = S.pop(); seq += Long.toString(l); } вернуть последовательность; } // проверяет, содержит ли строка подстроку общедоступная статическая логическая подстрока (строковая строка, строковая подстрока) { int index = string.indexOf(подстрока); если (индекс==-1) вернуть ложь; еще вернуть истину; } // возвращает обратную строку общедоступный статический StackX StackReverse (StackX S) { StackX newStack = новый StackX(S.getStackMaxSize()); в то время как (!S.isEmpty()) { newStack.push(S.pop()); } вернуть новый стек; } общедоступное статическое логическое значение isSeq(StackX S, int num) { String theNum = Integer.toString(num); Строка theStack = StackValues(S); StackX temp = новый StackX(S.getStackMaxSize()); температура = StackReverse (S); Строка theStackReversed = StackValues(temp); if (sub(theStack, theNum)==true || sub(theStackReversed, theNum)==true) вернуть истину; еще вернуть ложь; }
Для получения стека чисел и целого числа я хочу написать метод Java, который возвращает true, если все цифры числа появляются в виде последовательности в стеке, когда стек можно просмотреть сверху вниз или снизу. вверх.
Я написал код, но он дает частично плохие результаты.
Например, для стека [1,2,3], когда 3 является вершиной, а число 12, это дает неправильный результат. Но для [3,2,1], где 1 — вершина, это дает правильный результат. Проблема где-то в переворачивании стека. Оператор «или» не работает.
Что мне здесь не хватает?
Комментарий: StackX — это класс, который я написал. Это стек чисел с общими операциями: push, pop, peek, isEmpty, isFull и getSize.
Мой код:
// возвращаем строку со значениями стека общедоступная статическая строка StackValues (StackX S) { Строка seq = ""; в то время как (!S.isEmpty()) { длинный л = S.pop(); seq += Long.toString(l); } вернуть последовательность; } // проверяет, содержит ли строка подстроку общедоступная статическая логическая подстрока (строковая строка, строковая подстрока) { int index = string.indexOf(подстрока); если (индекс==-1) вернуть ложь; еще вернуть истину; } // возвращает обратную строку общедоступный статический StackX StackReverse (StackX S) { StackX newStack = новый StackX(S.getStackMaxSize()); в то время как (!S.isEmpty()) { newStack.push(S.pop()); } вернуть новый стек; } общедоступное статическое логическое значение isSeq(StackX S, int num) { String theNum = Integer.toString(num); Строка theStack = StackValues(S); StackX temp = новый StackX(S.getStackMaxSize()); температура = StackReverse (S); Строка theStackReversed = StackValues(temp); if (sub(theStack, theNum)==true || sub(theStackReversed, theNum)==true) вернуть истину; еще вернуть ложь; }
Мобильная версия