当前位置: 首页 > news >正文

【剑指 Offer】05,替换字符创中的空格;难度等级:简单。易错点:C++中 char 和 string 类型的转换

【剑指 Offer】05,替换字符创中的空格;难度等级:简单。

文章目录

    • 一、题目
    • 二、题目背景
    • 三、我的解答
    • 四、易错点
    • 五、知识点:char 和 string 类型的转换

一、题目

在这里插入图片描述

二、题目背景

在网络编程中,如果 URL 参数中含有特殊字符,如空格、#等,则可能导致服务器端无法获得正确的参数值。我们需要将这些特殊符号转换成服务器可以识别的字符。

转换的规则是在%后面跟上ASCII码的两位十六进制的表示,比如:

空格 的ASCI码是32,即十六进制的0x20,因此空格被替换成"%20"
'#'的ASCII码为35,即十六进制的0x23,它在URI中被替换为"%23"

三、我的解答

基础答案:

class Solution {
public:string replaceSpace(string s) {string s_new;for(auto a:s){if(a==' ')s_new+="%20";elses_new+=a;}return s_new; }
};

进阶语法(使用三目运算符替换 if - else 语句)

class Solution {
public:string replaceSpace(string s) {string s_new;for(auto iter:s){string iter_str(1,iter);s_new+=(iter==' ') ? "%20":iter_str;}return s_new; }
};

执行结果:

执行用时:0 ms, 在所有 C++ 提交中击败了 100.00% 的用户
内存消耗:6 MB, 在所有 C++ 提交中击败了 81.92% 的用户

四、易错点

在进阶语法中,直接写成下面的格式会编译报错:

class Solution {
public:string replaceSpace(string s) {string s_new;for(auto iter:s)s_new+=(iter==' ') ? "%20":iter;return s_new; }
};

报错大意是 “%20” 是 string 类型 ,而 iter 是 char 类型,二者不一致。因此需要将 iter 转化为 string 类型。

五、知识点:char 和 string 类型的转换

直接使用 string(iter) 是错误的,因为 string类 没有 string( char c) 这样的构造函数。正确的构造函数是:

string(size_t n, char c);    // 使用 n 个字符 'c' 初始化string对象

所以我们使用 string iter_str (1, iter) 将 char 类型的 iter 转换为 string 类型的 iter_str

还有其他几种将 char 转换为 string 的方法可参考博客 c++转换char为string的几种方式

http://www.lryc.cn/news/67214.html

相关文章:

  • 图像分割入门教程
  • C++入门教程||C++ 信号处理||C++ 多线程
  • java计算矩形的面积和周长的方法
  • 一分钟掌握如何更换Jupyter Notebook的主题和字体
  • 如何系统全面的自学自动化测试?明确后我直接拿到了20K
  • 【搭建私有云盘】无公网IP,在外远程访问本地微力同步
  • Pytest自动化测试框架一些常见的插件
  • 【力扣】刷题+剑指offer第二版
  • QueryStorm Crack
  • 网络安全与隐私保护:挑战与应对策略
  • 不同应用场景瑞芯微RK3568主板方案定制
  • 公司数字化转型,如何选择高效的知识管理工具?
  • 银行从业法律法规(初级)-多选
  • Maven 依赖管理 学习
  • 分享105个NET源码ASP源码,总有一款适合您
  • Web缓存利用分析(三)
  • Git合并冲突的根本原因和解决方法
  • 从C语言到C++⑨(第三章_CC++内存管理)详解new和delete+面试题笔试题
  • 阿里云服务器安装宝塔Linux面板教程图解
  • ORA-01555 ORA-22924 快照过旧问题处理
  • Win11系统更新后网络速度变的很慢怎么办?
  • 了解 XML结构(一)
  • Vue简单语法记录
  • matplotlib的安装和使用教程:中文字体及语言参数设置
  • mysql深分页
  • 【JavaScript由浅入深】常用的正则表达式
  • QT常用类型字节数组QByteArray及其基本使用
  • APP 兼容性测试是什么?8年测试老鸟告诉你
  • Golang每日一练(leetDay0061) 表列序号、阶乘后的零
  • 深度解析C++异常处理机制:最佳实践、性能分析和挑战