Simplify Path

原题链接Simplify Path

要求是输入一个路径,由于路径中存在”..”,”.”等特殊标记符,所以字符串表示的路径可能不是真实路径,返回真实的路径


对于特殊字符的解释如下

  • “..”表示回到上一级,如/home/a/../实际指向的路径是/home
  • “.”可以略过,不对当前路径做修改,如/home/a/./b实际指向的路径是/home/a/b
  • “//”多个斜线连在一起可以简化为一条,如/home//a/实际指向的路径是/home/a

本题主要利用字符串的分解进行解决,对于有效路径的内容,可以选择栈(stack),数组(vector)存储。扫描一遍给定字符串后将有效的路径信息存储在容器中,在最后重新组合成一个实际路径

因为路径是由”/”分隔的,所以分解字符串可以利用getline()函数,其中的某个重载如下可以接收第三个参数作为分隔符,可以传入’/’来简化字符串的分解

代码如下

    class Solution {public:string simplifyPath(string path) {std::stack<string> st;std::stringstream oss(path);std::string filename("");while(getline(oss, filename, '/')){if(filename == "" || filename == ".")continue;else if(filename == ".." && !st.empty())st.pop();else if(filename != "..")st.push(filename);}std::string res("");while(!st.empty()){res = "/" + st.top() + res;st.pop();}/* 如果栈是空的,那么就返回"/",否则,所有的"/"都在while循环中添加过了 */return res.empty() ? "/" : res;}};

本题主要利用getline函数简化字符串的分解,第三个参数可以传入分隔符,而默认换行符是分隔符

每天一道LeetCode-----化简路径相关推荐

  1. 求解leetcode分式化简

    #include <stdio.h>//leetcode 分式化简int arr[2]; int* fraction(int* cont, int contSize, int* retur ...

  2. Leetcode 02.分式化简

    LCP 02. 分式化简 难度简单 有一个同学在学习分式.他需要将一个连分数化成最简分数,你能帮助他吗? 连分数是形如上图的分式.在本题中,所有系数都是大于等于0的整数. 输入的cont代表连分数的系 ...

  3. 一天一道LeetCode(61-90)

    一天一道LeetCode(61-90) 文章目录 一天一道LeetCode(61-90) 61.旋转链表 62.不同路径 63.不同路径 II 64.最小路径和 65.有效数字(未解决) 66.加一 ...

  4. 矩阵化简计算器_论一台图形计算器,如何拯救你的SAT2数学

    为了SAT,SAT2以及AP考试,很多同学都准备了TI-84,TI-Nspire以及各种各样的图形计算器来应对考试.这些计算器最大的共同点,就是贵,但是贵一定有贵的道理.那么在整场考试中,你有多少题目 ...

  5. 看完这篇还不会化简卡诺图?你来打我

    最通俗易懂的的卡诺图化简教程 首先我们来介绍一下什么是卡诺图: 卡诺图是逻辑函数的一种图形表示.一个逻辑函数的卡诺图就是将此函数的最小项表达式中的各最小项相应地填入一个方格图内,此方格图称为卡诺图. ...

  6. c语言指针化简带分数,自动生成四则运算题目(C语言)

    Github项目地址:https://github.com/huihuigo/expgenerator 合作者:马文辉(3118005015).卢力衔(3118005013) 项目简介 1题目:实现一 ...

  7. 每日一道 LeetCode (36):相交链表

    每天 3 分钟,走上算法的逆袭之路. 前文合集 每日一道 LeetCode 前文合集 代码仓库 GitHub: https://github.com/meteor1993/LeetCode Gitee ...

  8. leetcode-Algorithms-LC-2 |分式化简

    原题 思路 如果想写出来统一的公式,那就是极其错误的思想. 可以每次都当成一个独立的 1/(A1+1/A2)的运算. 代码 package leetcode.LCP;public class Solu ...

  9. 一文搞定有穷状态自动机(FA)——DFA、NFA区别、转换以及DFA化简

    有穷状态自动机(Finite Automata, FA)分为确定的和不确定的,简称为DFA和NFA. 确定有穷自动机(DFA) 形式定义: 表示形式为: 注意:终态是用两个圆圈表示的,图中的3号即为D ...

  10. 卡诺图化简法注意事项+竞争冒险知识点总结

    今天反思一下卡诺图化简法中的注意事项.另,文章太短被限流了,因此补充一下竞争冒险相关的知识点. 一.卡诺图化简法 卡诺图方法在这里不介绍了,这种方法看起来简单,但如果不熟悉的话很容易出错,因此要对花圈 ...

最新文章

  1. 程序员都该懂点 HTTP
  2. SAP MM ME57界面看到的供应源跟Source List主数据不一致?
  3. c语言的语言扩展的数据类型,C语言之数据类型
  4. 0.0 目录-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. 字节面试现场,问我如何高效设计一个LRU
  6. Spring MVC中Session的正确用法之我见02
  7. 威宝推出支持四接口的桌面硬盘新品
  8. iOS四种多线程(swift和oc)
  9. Windows Server 2016与旧版本系统比较
  10. delphi 更改DBGrid 颜色技巧
  11. python做一个窗口样式_python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法...
  12. 生产者消费者模式-java原生、Disruptor实现方案
  13. liunx 环境-配置docker阿里云镜像加速
  14. OLED12864 液晶屏
  15. 海康信号灯控制机服务器,交通信号控制硬件设备简介
  16. MacBook入门之——添加打印机
  17. H3C三层交换机之IRF虚拟化技术详解及配置
  18. 计算机加减乘除的公式,excel公式汇总(excel公式加减乘除)
  19. 信息安全意识教育日历——By 安全牛
  20. VS (Visual Studio) 魔兽插件开发工具 AddOn Studio for WOW 1.0 含有LUA编辑

热门文章

  1. linux mysql设置编码_linux下修改mysql编码
  2. Java黑皮书课后题第3章:*3.20(科学:风寒温度)编写一个程序,提示用户输入一个温度值和一个风速值。如果输入值合法,那么显示风寒温度,否则显示温度或风速是不合法数据
  3. bzoj1878: [SDOI2009]HH的项链
  4. pikachu漏洞靶机之xss漏洞post提交方式
  5. iOS之深入解析“锁”的底层原理
  6. Swift之深入解析如何自定义操作符
  7. HarmonyOS之数据管理·分布式数据服务的应用
  8. Hive 任务卡在 map = 0%, reduce = 0%
  9. 某公司有一台打印、复印一体机,需要将购买成本分年均摊到隔年的费用中。请编写一个程序,根据用户输入的购买金额和预计使用年限计算每年的分摊费用。要求对输入异常进行适当的处理。
  10. 97. Interleaving String 交错字符串