leetcode-831. 隐藏个人信息
1 | class Solution { |
简简单单的代码,包含了不少知识:
string::npos的类型
网上一些博客有这样一种说法,string::npos不应该被定义为int,这样会导致错误,经过查阅,这种说法既对又不对。
在一些老版本的C++标准中,string::npos可能被定义为一个int类型的常量,这可能会导致一些类型转换问题。但在C++11及以上的标准中,string::npos被定义为size_t类型的常量,因此不会出现类型问题。
用双引号和单引号表示的字符串有什么区别?
在C++中,使用双引号 " 表示的字符串是字符串字面量,会被解释为一个 const char* 类型的指针。例如,const char* s = "hello"; 将会创建一个指向字符串 "hello" 的指针。
而使用单引号 ' 表示的是字符字面量,会被解释为一个 char 类型的值。例如,char c = 'a'; 将会创建一个值为 'a' 的 char 变量。
另外,双引号表示的字符串可以包含任意数量的字符,而单引号只能包含一个字符。因此,如果要表示一个字符串,应该使用双引号,而如果要表示一个单独的字符,应该使用单引号。
substr 函数在一个参数的时候代表什么?
当 substr 函数只有一个参数时,它表示从该参数所指定的位置开始,一直截取到字符串的末尾。例如,std::string s = "hello world"; s = s.substr(6); 将把 s 的值改为 "world"。
如何将大写字母转换为小写字母?
可以使用C++中的 std::tolower() 函数将大写字母转换为小写字母。例如,char c = 'A'; c = std::tolower(c); 将把 c 的值改为小写字母 a。
transform的用法
std::transform是C++标准库中的一个算法,它用于对一个序列中的每个元素进行转换,并将结果存储到另一个序列中。transform的一般用法如下:
1 | std::transform(InputIt first1, InputIt last1, OutputIt d_first, UnaryOperation unary_op); |
其中,first1和last1表示输入序列的范围,d_first表示输出序列的起始位置,unary_op表示对每个输入元素要执行的操作。具体来说,transform将从first1到last1中的每个元素应用unary_op操作,并将结果存储到从d_first开始的输出序列中。
下面是一些transform的常见用法:
- 对容器中的元素应用函数
1 |
|
上述代码中,transform函数对nums中的每个元素应用add_one函数,并将结果存储到result容器中。
- 对字符串中的字符应用函数
1 |
|
- 对两个容器的元素应用函数
1 |
|
什么是 regex_replace 函数?
regex_replace 函数是 C++ 标准库中正则表达式库的一部分,提供了对字符串进行正则表达式匹配和替换的功能。使用该函数可以将字符串中匹配到的部分替换为指定的内容。