1. 字符串 String

在C语言中使用的char类型的数组在C++中被封装成 string 类型,并且提供了许多方便的操作函数。

1.1 String基础内容

小技巧

String

String API 抽空补充一下。

1.2 String 题目类型说明

小技巧

从string的基础特性来考察,string是变种数组,基本拥有数组的操作,还更多的拥有字符的特性:匹配、排序、字典序等。

分类:

  • 顺序

  • 反转

  • 翻转

  • 包含

  • 统计

  • 匹配

  • 回文

  • 字串

  • 子序列

  • 字典序

1.3 String经典题目

1.3.1 面试题05:替换空格

题目如下:

请实现一个函数,把字符串 s 中的每个空格替换成"%20".

输入:s = "We are happy."

输出:"We%20are%20happy."

实现思路:

step1、不构建新字符,添加空字符进行修改,遇到一个空格就在末尾+2空格

step2、倒序遍历

1)当遇到普通字符时候,将s[j]赋值给尾指针s[i],然后尾指针-1,这里简写成 s[i--] = s[j]

2)当遇到空格时候,需要替换成制定字符,将 s[i--] = ''重复即可

string replaceSpace(string s) {

        int length = s.size();
        for(int i = 0; i < length; i++){
            if(s[i] == ' '){
                s += "  ";
            }
        }
        int i = s.size() - 1; // 指向末尾
        for(int j = length - 1; j >= 0; j--){ // 指向原有字符串结尾
            if(s[j] == ' '){
                s[i--] = '0';
                s[i--] = '2';
                s[i--] = '%';
            } else {
                s[i--] = s[j];
            }
        }
        return s;
}

1.3.2 面试题16:数值的整数次方

1.3.3 面试题19:正则表达式匹配

1.3.4 面试题20:表示数值的字符串

1.3.5 面试题29:顺时针打印矩阵

1.3.6 面试题44:数字序列中某一位的数字

1.3.7 面试题58:翻转字符串(翻转单词顺序、左旋转字符串)

1.3.8 面试题61:扑克牌的顺子

1.3.9 面试题67:把字符串转换成整数

1.4 String拓展题目

暂时略,看看测试结构,后续补充完全。