字符串解密

  • 字符串解密
  • 大致思路
  • 代码实现

字符串解密

力扣简单习题:

大致思路

当遇到数字时,将数字直接入数字栈num,当遇到左边括号时,则先判断数字栈是否为空,若为空,则直接进入下一个字符的遍历,若不为空,则将该字符压入字符串栈,并将num数字栈清空,若为右括号,则将num栈栈顶数字弹出即为value,再将字符串栈中的栈顶元素出栈,并且重复value次,再入栈list。如果为字母,则直接跟到刚刚的list后面即可。

代码实现

package com.immunize.leetcode.decode;import java.util.ArrayList;
import java.util.List;
import java.util.Stack;/*** 实现字符串解码* * @author Mr IMMUNIZE**/
public class Decode {public String decodeString(String s) {// 实现一个Exp泛型的stackStack<Exp> stack = new Stack<>();// num类型的stack用来存放数字Exp e = new Exp(1);stack.push(e);// num为空String num = "";// 遍历字符串for (int i = 0; i < s.length(); i++) {// 获取当前遍历的字符char c = s.charAt(i);// 若为数字,则将其赋值给num,转化为字符串的numif (c >= '0' && c <= '9') {num = num + c;}// 如果为左边括号,且此时num中没有数字,则进入下一轮循环else if (c == '[') {if (num.length() == 0)continue;// 如果为左边括号,但数字栈不为空,则将该数字变为int型整数valueint value = Integer.parseInt(num);// 再将num数字栈清空num = "";// 将这个num的数字变为count,用于拼接字符串的次数Exp exp = new Exp(value);// 将该类型的exp入栈stack.push(exp);}// 右括号的话,则直接出栈栈顶元素赋值为topelse if (c == ']') {// 若为右括号,则将该字符串重复num次,也就是top,添加到list后面即可Exp top = stack.pop();stack.peek().list.add(top);}// 如果不是括号,则直接将字符添加到list即可。else {stack.peek().list.add(new Exp(c));}}// 获得最终的字符串Exp root = stack.pop();return root.getStr();}
}// 该泛型用于简化代码
class Exp {int count;List<Exp> list;char c;public Exp(int num) {count = num;list = new ArrayList<>();}public Exp(char ch) {c = ch;}// 进行字符串的拼接,并返回拼接后的字符串public String getStr() {String result = "";if (list != null) {for (int i = 0; i < count; i++) {for (Exp e : list) {result += e.getStr();}}} else {result += c;}return result;}
}
-----------------------------------------------------------------------------
package com.immunize.leetcode.decode;/*** 测试* * @author Mr IMMUNIZE**/
public class DecodeTest {public static void main(String[] args) {Decode d = new Decode();// aaabcbcSystem.out.println(d.decodeString("3[a]2[bc]"));// accaccaccSystem.out.println(d.decodeString("3[a2[c]]"));// abcabccdcdcdefSystem.out.println(d.decodeString("2[abc]3[cd]ef"));}}

20190806:字符串解密相关推荐

  1. Unidbg系列--Ollvm字符串解密

    Ollvm字符串解密 原理 使用unidbg框架,模拟调用So文件,并Hook内存写操作,当so解密操作写入内存时,回调获取解密字符串,并将其写入新so文件中,达到反OLLVM字符串加密的目的. 解密 ...

  2. 【满分】【华为OD机试真题2023 JAVAJS】字符串解密

    华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 字符串解密 知识点数组字符串排序 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 给定两个字符串string1和stri ...

  3. 【华为OD机试2023】字符串解密 java python c++

    字符串解密 题目 题目描述 给定两个字符串string1和string2. string1是一个被加扰的宇符串.string1由小写英文字母(a~z) 和数字字符(0~9) 组成,而加扰字符串由&qu ...

  4. 【华为OD机试真题】字符串解密(C++javapython)100%通过率 超详细代码注释 代码解读

    [华为OD机试真题 2022&2023]真题目录 @点这里@ [华为OD机试真题]信号发射和接收 &试读& @点这里@ [华为OD机试真题]租车骑绿道 &试读& ...

  5. 教你如何进行c字符串解密

    目录 输入只含有大小写字母的字符串,字符串长度50,字符串解密(向右移动5位) 代码: Ascii码对照表: 运行结果: 1 输入只含有大小写字母的字符串,字符串长度50,字符串解密(向右移动5位) ...

  6. python字符串解密代码_几种字符串加密解密的方法

    第一种:[ Python 与 Bash Shell 的结合 ] 这个命令会让你输入一个字符串,然后会再输出一串加密了的数字. 加密代码[照直输入]: python -c 'print reduce(l ...

  7. dex字符串解密_Androguard补完计划——锁定字符串解密函数

    一.理论基础(我们先讲道理) 上回说到我们找到了dex中的加密字符串 提取加密字符串. 观众老爷们问:那么找到这些加密字符串有什么作用呢?该看不懂的还是看不懂啊... 那么今天我就来告诉大家,找到的这 ...

  8. go语言逆向技术之---常量字符串解密

    [摘要]go语言编译出来的二进制文件中,字符串数据是如何存放的,逆向时如何快速和准确的识别出源代码中定义的字符串,本文给你解密. **Go语言源代码编译成二进制文件后,源代码中的字符串存放在哪里?是如 ...

  9. android密码sha256解密,如何使用密钥字符串解密SHA-256加密字符串?

    这是我的java代码,使用密钥及其正常工作加密String值,但我不知道如何将这些ecrypted值解密为My original values ..? package com.password; im ...

最新文章

  1. 实践学习:首次项目合作
  2. 软件设计师备考知识05--设计模式
  3. Tomcat 原理篇
  4. Java的知识点19——异常机制Exception
  5. 使用高级视频质量工具 AVQT 评估视频 | WWDC 演讲实录
  6. 斐波那契数列的前n项值
  7. 再一贴[亲爱的,我不小心怀孕了~!]
  8. 论文浅尝 | BoxE:一种基于Box的知识图谱表示学习模型
  9. svn://127.0.0.1/shop
  10. cassss服务未启动_systemd时代的服务管理
  11. 什么是云存储 API
  12. left+right /2_在C / C ++中使用Left Shift和Right Shift运算符
  13. 解决: Mysql安装时mysqld.exe报`应用程序无法正常启动(0xc000007b)`的问题
  14. 计算机基础(九):C语言基础知识小结
  15. 电商直播运营的思路流程
  16. 【数学建模】元胞自动机
  17. 手机配置host的替代方案
  18. 对图像高通滤波matlab,高通巴特沃斯滤波器在MATLAB中对图像进行滤波
  19. 罗马数字转整数(C++)
  20. 兴趣社区圈子论坛系统搭建教程,教你上线自己的论坛圈子系统。

热门文章

  1. Python 爬取 6271 家死亡公司数据,一眼看尽十年创业公司消亡史!
  2. 那些年 iOS 升级踩过的坑!
  3. 微软发布 VS Code Remote,开启远程开发新时代!
  4. 亚马逊不仅将弃用 Oracle,还要抢 Java 饭碗!
  5. 为何 iOS 越来越偏爱 Swift?
  6. 程序员中年危机的破解之道
  7. Java高级面试题!docker启动
  8. 第 4 章 程序计数器
  9. zabbix修改tomcat监控端口
  10. 用python画星座_用python做星座介绍程序。