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

C++基础: string(3)

在这里插入图片描述

文章目录

  • 1. 两道题目
    • 1. [387. 字符串中的第一个唯一字符 - 力扣(LeetCode)](https://leetcode.cn/problems/first-unique-character-in-a-string/description/)
    • 2.[415. 字符串相加 - 力扣(LeetCode)](https://leetcode.cn/problems/add-strings/)
  • 2. string增删查改相关接口
  • 3.string相关题目
    • 1.[字符串最后一个单词的长度_牛客题霸_牛客网](https://www.nowcoder.com/practice/8c949ea5f36f422594b306a2300315da?tpId=37&&tqId=21224&rp=5&ru=/activity/oj&qru=/ta/huawei/question-ranking)

1. 两道题目

1. 387. 字符串中的第一个唯一字符 - 力扣(LeetCode)

image-20241021201950153
这道题可以直接进行比较,但是时间复杂度就比较高了

例如:

class Solution {
public:int firstUniqChar(string s) {int r = s.size();for (int i = 0; i < r; i++) {bool isUnique = true;for (int j = 0; j < r; j++) {if (i!= j && s[i] == s[j]) {isUnique = false;break;}}if (isUnique) {return i;}}return -1;}
};

我们这里可以用和计数排序一样的方法就可以解决

class Solution {public:int firstUniqChar(string s) {// 统计每个字符出现的次数int count[256] = {0};int size = s.size();for(int i = 0; i < size; ++i)count[s[i]] += 1;// 按照字符次序从前往后找只出现一次的字符for(int i = 0; i < size; ++i)if(1 == count[s[i]])return i;return -1;}};

2.415. 字符串相加 - 力扣(LeetCode)

image-20241029153646376

to_string可以将其他类型转换为字符串

image-20241029154409946

就和我们进行加减计算时候,从后向前进行计算

class Solution {
public:string addStrings(string num1, string num2) {int end1 = num1.size() - 1, end2 = num2.size() - 1;string str;int next = 0;while (end1 >= 0 || end2 >= 0) {int val1 = end1 >= 0 ? num1[end1] - '0' : 0;int val2 = end2 >= 0 ? num2[end2] - '0' : 0;end1--, end2--;// 如果走完了就将其补上0 ,否则就将其转换为数字int ret = val1 + val2 + next;next = ret / 10;ret %= 10;str.insert(str.begin(), '0' + ret);}if (next == 1) {str.insert(str.begin(), '1');}return str;}
};

2. string增删查改相关接口

  1. string::push_back 用来插入字符
  2. string::append 用来插入字符串

image-20241029163843147

当然也可以用+=来实现一样的效果:

image-20241029164322114

  1. string::insert 任意位置插入字符串

    image-20241029164736643

  2. string::erease 可以将任意位置的字符进行删除

image-20241029165909376

尾部删除可以用迭代器版本,也可以间接删除:

image-20241029170712269

  1. string::replace 替换字符串中的字符

image-20241029172636548

  1. string::find 查找字符串 string::rfind从后向前进行查找

如果找到了就返回下标

没有找到返回的值是string::npos

image-20241029173340327

image-20241029173235785

  1. string::strsub可以将输入的第一个参数后面的内容进行拷贝,知道这个字符串的结束

1730248932834

  1. string::find_first_of返回要找输入的字符串中的所有字符(默认第一个数据为开始位置,第二个数据为结束位置,如果不输入就直接到结尾)

1730250633457

  1. 我们在写window是要加两个’ \ ',因为一个在C语言中表示的是转义字符

1730252181272

  1. string::find_last_of 和first_of相反从后向前进行查找

使用方法如下:

1730253543491

3.string相关题目

1.字符串最后一个单词的长度_牛客题霸_牛客网

1730255044953

题目不难,但有个点需要注意:

#include <iostream>
#include <string>
using namespace std;int findLastword(string str) {size_t pos = str.rfind(" ");return str.size() - (pos + 1);
}int main() {string str;//cin>>str;  不能直接用cin,因为cin遇到空格就不再接受了,直接终止了getline(cin,str); //getline第三个参数可以调成你想停止的符号,如果不输入就默认换行才停止cout << findLastword(str) << endl;
}

http://www.mrgr.cn/news/62085.html

相关文章:

  • The database mes could not be exclusively locked to perform the operation.
  • Cisco Packet Tracer 8.0 路由器的基本配置和Telnet设置
  • 使用 undici 为 Node.js 原生 fetch 请求设置代理
  • Spring Boot集成Milvus和deeplearning4j实现图搜图功能
  • Spring Boot应用MongoDB
  • binlog 介绍
  • 【ROS】详解ROS文件系统
  • 【ECMAScript标准】深入解析ES5:现代JavaScript的基石
  • InnoDB 存储引擎<四>磁盘文件一
  • QChart中柱形图的简单使用并实现【Qt】
  • 【力扣打卡系列】反转链表
  • python 模块和包、类和对象
  • VBA语言専攻介绍20241031
  • android 12 禁止三方APP 使用API 直接打开wifi的修改方法
  • IDEA 社区版 lombok插件报错(java:方法引用无效)
  • MongoDB 部署指南:从 Linux 到 Docker 的全面讲解
  • 算法|牛客网华为机试11-20C++
  • 树莓派4处理器超频指南
  • 两步GMM计算权重矩阵
  • matlab读取逐日的1km分辨率中国大陆地区的土壤水数据,并汇总至逐月分辨率
  • 数字化平台助力:国际数字影像产业园打造智慧园区生态圈
  • (也许是全网首发!)Qt6 编译著名Widgets组件 Qt Material Widgets by MSVC / Mingw
  • 设计产品宣传册没参考?推荐一个超多产品宣传册案例的网站
  • OpenJudge:找和为K的两个元素
  • 接口自动化测试平台项目环境搭建
  • MySQL-SQL性能分析