腾讯2020校招面试题(压缩算法实现)

腾讯2020校招试题一——压缩算法

题目来自牛客网,感谢!

现有对仅含大写字母字符串的压缩算法:字符串中连续m个相同字符子串S将会压缩为[m|S]。试设计解压缩算法。

输入格式

第一行输入待解压的字符串,仅由大写字母、[|]组成

输出格式

第一行输出解压后的字符串

输入范例

HG[3|B[2|CA]]F

输出范例

HGBCACABCACABCACAF

压缩行为是可以嵌套的,因此不能直接顺序解压。注意到[]的成对关系,可令指针从字符串开头向后寻找第一个],再从该位置向前寻找第一个[,即可取得配对的[]
实现中使用了String类的静态方法join和动态方法replace,与Collections类的静态方法nCopies。

我的代码实现

import java.util.Collections; import java.util.Scanner; public class Compress { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); sc.close(); while (s.contains("]")) { int right = s.indexOf("]"); int left = s.lastIndexOf("[", right); String str = s.substring(left + 1, right); String[] p = str.split("\\|"); s = s.replace("[" + str + "]", String.join("", Collections.nCopies(Integer.parseInt(p[0]), p[1]))); } System.out.println(s); } } 

本文地址:https://blog.csdn.net/Uranum/article/details/107892727

(0)
上一篇 2022年3月22日
下一篇 2022年3月22日

相关推荐