建设网站需要什么手续,公司宣传册设计样本免费,专业做微视频的网站,广州代理记账题目 给出一个字符串s(仅含有小写英文字母和括号)。 请你按照从括号内到外的顺序#xff0c;逐层反转每对匹配括号中的字符串#xff0c;并返回最终的结果。注意#xff0c;您的结果中不应包含任何括号。 示例1: 输入: s “(abcd)” 输出: “dcba” 示例2: 输入: s “(u(l…题目 给出一个字符串s(仅含有小写英文字母和括号)。 请你按照从括号内到外的顺序逐层反转每对匹配括号中的字符串并返回最终的结果。注意您的结果中不应包含任何括号。 示例1: 输入: s “(abcd)” 输出: “dcba” 示例2: 输入: s “(u(love)i)” 输出: “iloveu” 解释: 先反转子字符串“love,然后反转整个字符串。 示例3: 输入: s “(ed(et(oc))el)” 输出: “leetcode” 解释: 先反转子字符串oc”接着反转“etco”然后反转整个字符串。 示例4: 输入: s a(bcdefghijkl(mno)p)q” 输出: “apmnolkjihgfedcbq” 思路 利用栈的先入后出特性遇到)这将字符串翻转后重新入栈 最后栈中的数据就是要求的字符串此时应该先入先出外层可以用双端队列实现 题解
package hwod;import java.util.LinkedList;
import java.util.Scanner;public class ReverseSub {public static void main(String[] args) {Scanner sc new Scanner(System.in);String s sc.nextLine();System.out.println(reverseSub(s));}private static String reverseSub(String s) {LinkedListCharacter queue new LinkedList();LinkedListCharacter tmp new LinkedList();for (int i 0; i s.length(); i) {if (s.charAt(i) )) {while (!queue.isEmpty()queue.peekLast() ! () {tmp.addLast(queue.removeLast());}if(!queue.isEmpty()) queue.removeLast();while (!tmp.isEmpty()) {queue.addLast(tmp.removeFirst());}} else {queue.addLast(s.charAt(i));}}StringBuilder sb new StringBuilder();while (!queue.isEmpty()) {sb.append(queue.removeFirst());}return sb.toString();}
}
推荐
如果你对本系列的其他题目感兴趣可以参考华为OD机试真题及题解JAVA查看当前专栏更新的所有题目。
说明
本专栏所有文章均为原创欢迎转载请注明文章出处https://blog.csdn.net/qq_31076523/article/details/134176793。百度和各类采集站皆不可信搜索请谨慎鉴别。技术类文章一般都有时效性本人习惯不定期对自己的博文进行修正和更新因此请访问出处以查看本文的最新版本。