替换空格(剑指offer 05)
2023-03-14 22:47:57 时间
一、题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
二、思路讲解
题目中的字符串在操作时长度发生变化,由于字符串是不可变类型,显然使用字符数组操作更加便捷。
三、算法描述
创建一个字符数组a,长度为s的三倍(考虑所有全部为空格的极端情况),然后遍历s:若不为空格,则直接复制到a中;若为空格,则在a中添加"%20"。
四、Java代码实现
class Solution { public String replaceSpace(String s) { char []a = new char[s.length()*3]; int index = 0; //字符数组中的索引,标记现在添加到了哪里 for(int i=0;i<s.length();i++) { char temp = s.charAt(i); //如果是空格,在a中添加"%20" if(temp == ' ') { a[index++] = '%'; a[index++] = '2'; a[index++] = '0'; } else { a[index++] = temp; } } return new String(a, 0, index); } }
五、时空复杂度分析
时间复杂度:O(n) 遍历了字符串s
空间复杂度:O(n) 创建了一个字符数组a
执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
内存消耗:35.8 MB, 在所有 Java 提交中击败了99.53%的用户
六、其他代码实现
1、C++
class Solution { public: string replaceSpace(string s) { //字符数组 string array; //存储结果 for(auto &c : s){ //遍历原字符串 if(c == ' '){ array.push_back('%'); array.push_back('2'); array.push_back('0'); } else{ array.push_back(c); } } return array; } };
相关文章
- 在 Go 里用 CGO?这 7 个问题你要关注!
- 9款优秀的去中心化通讯软件 Matrix 的客户端
- 求职数据分析,项目经验该怎么写
- 在OKR中,我看到了数据驱动业务的未来
- 火山引擎云原生大数据在金融行业的实践
- OpenHarmony富设备移植指南(二)—从postmarketOS获取移植资源
- 《数据成熟度指数》报告:64%的企业领袖认为大多数员工“不懂数据”
- OpenHarmony 小型系统兼容性测试指南
- 肯睿中国(Cloudera):2023年企业数字战略三大趋势预测
- 适用于 Linux 的十大命令行游戏
- GNOME 截图工具的新旧截图方式
- System76 即将推出的 COSMIC 桌面正在酝酿大变化
- 2GB 内存 8GB 存储即可流畅运行,Windows 11 极致精简版系统 Tiny11 发布
- 迎接 ecode:一个即将推出的具有全新图形用户界面框架的现代、轻量级代码编辑器
- loongarch架构介绍(三)—地址翻译
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- 敏捷:可能被开发人员遗忘的部分
- Denodo预测2023年数据管理和分析的未来
- 利用数据推动可持续发展
- 在 Vue3 中实现 React 原生 Hooks(useState、useEffect),深入理解 React Hooks 的