【C++】STL容器——string类的例题应用(9)

news2024/9/27 17:34:53

前言

大家好吖,欢迎来到 YY 滴C++系列 ,热烈欢迎!本章主要内容面向接触过C++的老铁,下面是收纳的一些例题与解析~
主要内容含:

欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门!

目录

    • 【例1]给一个字符串(包含字母与数字),将字符串翻转【访问string的size与对象】
    • 【例2]验证一个字符串是否是回文【范围for遍历字符串】
    • 【例3]找字符串中第一个只出现一次的字符【计数】
    • 【例4]输入一个字符串,求字符串里面最后一个单词的长度【getline函数的应用】
    • 【例5】将两个字符串相加(ASCALL码相加)【reverse函数,+=,insert】

【例1]给一个字符串(包含字母与数字),将字符串翻转【访问string的size与对象】

  • 如给定“123asd222zxc”,反转后得到“123cxz222dsa”
    在这里插入图片描述
class Solution {
public:
   bool isLetter(char ch)
   {
   if(ch >= 'a' && ch <= 'z')
   return true;
   if(ch >= 'A' && ch <= 'Z')
   return true;
   return false;
   }
   
   string reverseOnlyLetters(string S) 
   {
   if(S.empty())
   return S;
 
  size_t begin = 0, end = S.size()-1;
   while(begin < end)
   {
     while(begin < end && !isLetter(S[begin]))
     ++begin;

     while(begin < end && !isLetter(S[end]))
     --end;
 
     swap(S[begin], S[end]);
     ++begin;
     --end;
   }
   return S;
   }

}

【例2]验证一个字符串是否是回文【范围for遍历字符串】

class Solution {
public:
   bool isLetterOrNumber(char ch)//是否是字母
  {
   return (ch >= '0' && ch <= '9')
   || (ch >= 'a' && ch <= 'z')
   || (ch >= 'A' && ch <= 'Z');
   }

   bool isPalindrome(string s) 
   {
     for(auto& ch : s)//范围for,遍历字符串
     {
     if(ch >= 'a' && ch <= 'z')// 先小写字母转换成大写,再进行判断
     ch -= 32;
     }

   int begin = 0, end = s.size()-1;
   while(begin < end)
    {
       while(begin < end && !isLetterOrNumber(s[begin]))
       ++begin;

       while(begin < end && !isLetterOrNumber(s[end]))
       --end;
  
       if(s[begin] != s[end])
       {
          return false;
       }
        else
       {
         ++begin;
         --end;
       }
    }

   return true;
    }
};

【例3]找字符串中第一个只出现一次的字符【计数】

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;
   }
};

【例4]输入一个字符串,求字符串里面最后一个单词的长度【getline函数的应用】

  • getline函数有两种不同的形式,这也就对应着字符串的 结束方式
  • getline函数原型:getline(std::cin,string ch),表示以换行符 ‘\n’ 结束字符串的读入
  • getline函数原型 getline(std::cin,string s,char ch),表示以字符ch来结束字符串的读入
  • 功能: 无视空格,读取输入屏幕的字符串
#include<iostream>
#include<string>
using namespace std;
int main()
{
 string line;
 // 不要使用cin>>line,因为会它遇到空格就结束了
 // while(cin>>line)
 while(getline(cin, line))
 {
 size_t pos = line.rfind(' ');
 cout<<line.size()-pos-1<<endl;
 }
 return 0;
}

【例5】将两个字符串相加(ASCALL码相加)【reverse函数,+=,insert】

  • 题目如下所示:
    在这里插入图片描述
  1. 两个字符串相加的规定是,ASCALL码值相加
  2. 开始前,我们要清楚明白,该题目需要遍历两个字符串
  3. 有两种思路: 从前往后相加,+=尾插以后再reverse过来(代码片所用方法) 或者从后往前相加,相加的结果到字符串可以使用insert头插
  4. 我们先考虑分别遍历一位的情况,后面要采用while循环
  5. (1)遍历字符串的同时,分别取数,将字符的ASCALL通过-“0”,转换成整型
  6. (2)取数完的同时分别相加,考虑进位
  7. (3)最后再+“0”,重新转换成字符,形成字符串
class Solution {
public:
 string addstrings(string num1, string num2)
{
 int end1 = num1.size()-1;
 int end2 = num2.size()-1;
 
 int value1 = 0, value2 = 0, next = 0;//核心设置:
 
 string addret;//形成的新串存放在其中
 
 while(end1 >= 0 || end2 >= 0)
 {
   if(end1 >= 0)
   value1 = num1[end1--]-'0';
   else
   value1 = 0;
 
   if(end2 >= 0)
   value2 = num2[end2--]-'0';
   else
   value2 = 0;

  int valueret = value1 + value2 + next;//next为进位,value1,value2为单次循环中分别的取数
  
  if(valueret > 9)
  {
  next = 1;
  valueret -= 10;
  }
  else
  {
  next = 0;
  }
 //addret.insert(addret.begin(), valueret+'0');
 addret += (valueret+'0');
 }

 // 从后往前相加,相加的结果到字符串可以使用insert头插
 // 或者+=尾插以后再reverse过来
 if(next == 1)
 {
 //addret.insert(addret.begin(), '1');
 addret += '1';
 }

 reverse(addret.begin(), addret.end());
 return addret;
 }
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130597.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

k8s-----17、集群安全机制

1、集群安全机制概述 1.1 访问k8s的三个步骤 1、认证 2、鉴权(授权) 3、准入控制 进行访问的时候&#xff0c;过程中都需要经过apiserver&#xff0c;apiserver做统一协调&#xff0c;比如门卫。且访问过程中需要证书、token、或者用户名密码。如果需要访问pod&#xff0c;…

xshell+xming显示jmeter的gui页面

1.下载和安装xming&#xff0c;下载地址&#xff1a;https://sourceforge.net/projects/xming/ 2.配置xming 记住这个端口&#xff0c;一会要用到 修改进入xming安装目录修改host文件 此处是远程服务器的ip 3.服务器执行vi /etc/ssh/sshd_config&#xff0c;修改成如图所示…

C++入门(命名空间、缺省参数、引用、函数重载、内联函数)

目录 命名空间介绍命名空间格式命名空间使用 C输入输出缺省参数全缺省参数半缺省参数 函数重载引用引用特性常引用引用和指针的区别 内联函数 1024程序员节快乐&#xff01;&#xff01;&#xff01;&#x1f380;&#x1f381;&#x1f389; 命名空间介绍 在C/C中&#xff0c…

电子表格text函数学习

text函数用于格式化内容&#xff1b;函数格式是 text(要格式化的值, 格式)&#xff1b; B4有内容为 2020/3/15 &#xff1b;输入下图&#xff1b; 把B4内容格式化为下图的年月日形式&#xff1b;B11有数值4.5&#xff0c;输入下图的格式化函数&#xff0c; 结果是四舍五入取整…

Cisco IOS XE Web UI 命令执行漏洞

Cisco IOS XE Web UI 命令执行漏洞 受影响版本 Cisco IOS XE全版本 漏洞描述 Cisco IOS XE Web UI 是一种基于GUI的嵌入式系统管理工具&#xff0c;能够提供系统配置、简化系统部署和可管理性以及增强用户体验。它带有默认映像&#xff0c;因此无需在系统上启用任何内容或安…

Lua语言编写爬虫程序

以下是一个使用luasocket-http库和Lua语言编写的爬虫程序。此程序使用了https://www.duoip.cn/get_proxy的代码。 -- 引入所需的库 local http require("socket.http") local ltn12 require("ltn12") local json require("json") ​ -- 获取…

ARM,汇编指令

一、汇编指令 1、搬移指令 mov r0 ,#3 mov r1,r0 msr cpsr,r0 mrs r0,cpsr 2、条件执行及标志位 cmp moveq movgt 3、机器码 1&#xff09;、立即数合法性 2&#xff09;、立即数不合法 ldr r0,0x12345678 伪指令解决不合法的问题 前4位表示16个数&#xff0c;一个数移动2次。 …

安装MariaDB数据库安装(离线安装)

参考地址: https://mirror.mariadb.org/yum/10.4/centos7-amd64/rpms/ http://www.gxcode.top/code 4.1 安装mariadb环境需要的依赖 # yum install rsync nmap lsof perl-DBI nc 4.2 安装MariaDB依赖包 # rpm -ivh jemalloc-3.6.0-1.el7.x86_64.rpm # rpm -ivh jemalloc…

图和图神经网络的可视化,详解与示例

1 图和图神经网络可视化 图和图神经网络&#xff08;Graph Neural Networks&#xff0c;GNNs&#xff09;的可视化对于理解和分析复杂图结构和模型的工作非常重要。图和图神经网络&#xff08;GNN&#xff09;的可视化是一种强大的工具&#xff0c;用于理解和分析复杂的图结构…

B-3:Web安全之综合渗透测试

B-3:Web安全之综合渗透测试 任务环境说明: 服务器场景:Server2104(关闭链接) 服务器场景用户名、密码:未知 1.通过URL访问http://靶机IP/1,对该页面进行渗透测试,将完成后返回的结果内容作为FLAG值提交; 通过访问IP/1,查看源代码发现flagishere,访问后发现什么也没…

webpack中常见的Loader解决了什么问题?

一、是什么 loader 用于对模块的"源代码"进行转换&#xff0c;在 import 或"加载"模块时预处理文件 webpack做的事情&#xff0c;仅仅是分析出各种模块的依赖关系&#xff0c;然后形成资源列表&#xff0c;最终打包生成到指定的文件中。如下图所示&#…

2017年亚太杯APMCM数学建模大赛A题睡眠对人体的影响求解全过程文档及程序

2017年亚太杯APMCM数学建模大赛 A题 睡眠对人体的影响 原题再现 自2001年以来&#xff0c;世界睡眠医学协会将每年的3月21日定为世界睡眠日&#xff0c;以引起人们对睡眠的重要性和质量的关注。 一整天的精神状态取决于昨晚的睡眠质量&#xff0c;高睡眠质量自然保证了人们精…

C++面试常见问题多态如何实现?虚函数的底层如何实现?

1.黑马程序员多态例子 class Animal { public://Speak函数就是虚函数//函数前面加上virtual关键字&#xff0c;变成虚函数&#xff0c;那么编译器在编译的时候就不能确定函数调用了。virtual void speak(){cout << "动物在说话" << endl;} };class Cat …

Jetpack:016-Jetpack中的SanckBar

文章目录 1. 概念介绍2. 使用方法2.1 显示内容2.2 显示方法 3. 示例代码4. 内容总结 我们在上一章回中介绍了Jetpack相关的概念和主要内容&#xff0c;本章回中主要介绍 SnackBar。闲话休提&#xff0c;让我们一起Talk Android Jetpack吧&#xff01; 1. 概念介绍 我们在本章…

【J-Long Group Limited】申请1500万美元纳斯达克IPO上市

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 猛兽财经获悉&#xff0c;总部位于中国香港的J-Long Group Limited&#xff08;简称&#xff1a;J-Long&#xff09;近期已向美国证券交易委员会&#xff08;SEC&#xff09;提交招股书&#xff0c;申请在纳斯达克IPO上市&…

C语言 每日一题 PTA 10.21-10.24日 day3

1.计算分段函数[1] 本题目要求计算下列分段函数f(x)的值&#xff1a; yf(x)1/x x!0 yf(x)0 x0 int main() {double num 0;scanf("%lf", &num);double result 0;if (num 0){result 0;}else{result 1 / num;}printf("f(%.1lf)%.1lf", num, result)…

获取Android签名文件的MD5和SHA1指纹

以前在App中集成百度地图时&#xff0c;需要在百度地图的开发者网站上绑定应用的包名和签名&#xff0c;以预防自己的key被别人乱用。 最近公司的一个球机产品也搞了类似的做法&#xff0c;我们要访问它的摄像头功能需要使用厂家提供的aar库&#xff0c;但是你要想正常调用它的…

Unity性能优化一本通

文章目录 关于Unity性能优化一、资源部分&#xff1a;1、图片1.1、 图片尺寸越小越好1.2、使用2N次幂大小1.3、取消勾选Read/Write Enabled1.4、图片压缩1.5、禁用多余的Mip Map1.6、合并图集 2、模型2.1.限制模型面数2.2.限制贴图的大小2.3.禁用Read/Write Enables2.4.不勾选其…

阻塞队列BlockingQueue实战及其原理分析

一&#xff0c;队列 1. 队列 是限定在一端进行插入&#xff0c;另一端进行删除的特殊线性表。 允许出队的一端称为队头&#xff0c;允许入队的一端称为队尾。 先进先出(FIFO)线性表。 1.1 Queue接口 2. 阻塞队列&#xff08;BlockingQueue&#xff09; 阻塞队列 (BlockingQueu…

Linux系统64位ATT系统调用汇编指令syscall

相关概念 在Linux中syscall是系统调用&#xff08;英文&#xff1a;system call&#xff09;的指令。 想要深入了解syscall的作用&#xff0c;就需要了解特权级别。 现代计算机通常采用名为保护环&#xff08;Protection Rings&#xff09;的机制来保护整个系统的数据和功能&a…