博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode Simplify Path
阅读量:7113 次
发布时间:2019-06-28

本文共 1140 字,大约阅读时间需要 3 分钟。

 

总结

1. 做这种题时需要考虑 corner case, 比如连续几个 slash

2. 状态函数带参数 (int &pos), 主函数带 while 循环 while(pos < len), 我意识到对于 char* 或 string 操作时, 参数带上 lenth 也是蛮好的

3. 这次很快就 A 了, 甚至忘记以前为什么会在这里栽跟头

 

代码

string getFolderName(const string &path, int &i, const int &len)  {	string res;	while(i < len && path[i] != '/')  {		res.push_back(path[i]);		i ++;	}	return res;}class Solution {public:    string simplifyPath(string path) {  		deque
record; int i = 0; int len = path.size(); while(i < len) { if(path[i] == '/') { i ++; } else { string folderName = getFolderName(path, i, len); if(folderName == ".") { // do nothing } else if(folderName.size() == 2 && folderName == "..") { if(!record.empty()) record.pop_back(); } else { record.push_back(folderName); } } } string simplifiedPath = ""; while(!record.empty()) { simplifiedPath.push_back('/'); simplifiedPath.append(record.front()); record.pop_front(); } if(simplifiedPath.size() == 0) { simplifiedPath = "/"; } return simplifiedPath; }};

  

转载于:https://www.cnblogs.com/zhouzhuo/p/3682347.html

你可能感兴趣的文章
HEVC算法和体系结构:编码结构之编码时的分层处理架构
查看>>
Kettle定时执行
查看>>
泛函编程(14)-try to map them all
查看>>
使用meta实现页面的定时刷新或跳转
查看>>
[华为机试练习题]3.分解字符串
查看>>
2018.03.08、View的事件分发机制笔记
查看>>
使用工具类DbUtils连接数据库,并简单操作数据库
查看>>
vue/cli3+最全生产环境优化方法
查看>>
(译)使用Spring Boot和Axon实现CQRS&Event Sourcing
查看>>
微软整合实验(四):迁移FSMO操作主机角色,基于Server 2008 R2
查看>>
Cisco IPSec_×××详细配置
查看>>
我的友情链接
查看>>
git 修改账号密码
查看>>
2017 未来架构师<设计思考> 翻转式课堂
查看>>
eNSP园区网络结构图配置
查看>>
Windows 8 数学输入板
查看>>
PHP网站开发工程师的职业发展规划与技能条件
查看>>
我的友情链接
查看>>
PXE和kickstart无人值守安装
查看>>
Activiti 5.18 的Mybatis版本问题
查看>>