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

个人网站 建设方案书网站的建设期

个人网站 建设方案书,网站的建设期,中山网站建设设计,定制软件开发成本【C/C】速通涉及string类的经典编程题 一.字符串最后一个单词的长度代码实现:(含注释) 二.验证回文串解法一:代码实现:(含注释) 解法二:(推荐)1. 函数isalnum…

【C/C++】速通涉及string类的经典编程题

  • 一.字符串最后一个单词的长度
    • 代码实现:(含注释)
  • 二.验证回文串
    • 解法一:
      • 代码实现:(含注释)
    • 解法二:(推荐)
      • 1. 函数isalnum介绍:
      • 2. 函数tolower介绍:
      • 3. 代码实现:
  • 三.翻转字符串II:区间部分翻转
    • 代码实现:(含注释)
  • 四.翻转字符串III:翻转字符串中的单词
    • 代码实现:(含注释)

一.字符串最后一个单词的长度

本题牛客网链接:
在这里插入图片描述

原理:从字符串最后倒着往前遍历,遇到第一个空格标记其下标

代码实现:(含注释)

#include <iostream>
using namespace std;
#include <string>
int main() {string s;getline(cin, s);//读取一整行数据,遇到空格或“\0”照样读取int ret = s.rfind(' ', s.size() - 1);if(ret == s.size())//只有一个字符时printf("%lld",ret);elseprintf("%lld",(s.size() - 1 - ret));
}

二.验证回文串

本题LeetCode链接:
在这里插入图片描述

解法一:

原理:先将字符串中大写字符转化为对应小写字符,然后将数字和字符(注意不可拷贝空格)拷贝到tmp对象中,用双指针分别从tmp对象首尾开始向字符串中间遍历,遍历过程中判断两指针指向字符是否相等

代码实现:(含注释)

class Solution {
public:
bool isPalindrome(string s) {string tmp;//将大写字母转化为小写for (int i = 0; i < s.size(); i++){if (s[i] >= 'A' && s[i] <= 'Z'){s[i] += 32;}}int k = 0;for (int k = 0; k < s.size(); k++)//看题看题!!!字符和数字都要拷贝到tmp中{if ((s[k] >= 'a' && s[k] <= 'z') ||(s[k] >= '0' && s[k] <= '9')&& s[k] != ' ' )tmp += s[k];}//双指针法int begin = 0, end = tmp.size() - 1;while (begin < end){if (tmp[begin] != tmp[end])return false;begin++;end--;}return true;
}
};

解法二:(推荐)

原理:充分运用库函数的特性,再结合反向迭代器

1. 函数isalnum介绍:

  1. 函数原型:bool isalnum(auto ch);
  2. 函数功能:
    (1) 检查范围‌:isalnum函数检查传入的字符是否属于字母(大写或小写)或数字(0-9)的ASCII码范围。
    ‌(2)返回值‌:如果字符是字母或数字,则返回非零值(通常为真值);否则,返回零(表示假值)。

2. 函数tolower介绍:

  1. 函数原型:auto tolower(auto ch);
  2. 函数功能:将大写字母转换为小写字母。

3. 代码实现:

class Solution {
public:
bool isPalindrome(string s) {string tmp;for(auto ch : s){if(isalnum(ch))//函数isalnum{tmp += tolower(ch);//函数tolower}}string tmp_rev(tmp.rbegin(), tmp.rend());return tmp == tmp_rev;
}
};

三.翻转字符串II:区间部分翻转

本题LeetCode链接:
在这里插入图片描述

原理:充分运用reverse函数,特殊情况特殊处理,注意把控区间边界

代码实现:(含注释)

class Solution {
public:string reverseStr(string s, int k) {int ps = 0;if(k > s.size())//特殊情况一{reverse(s.begin(), s.end());return s;}if(ps + 2*k > s.size())//特殊情况二{reverse(s.begin(), s.begin() + k);return s;}while (ps + 2*k <= s.size())//边界问题等于不可少{reverse(s.begin() + ps, s.begin() + ps + k);ps += 2 * k;if (ps + k > s.size()){reverse(s.begin() + ps, s.end());}if (ps + 2 * k > s.size() && ps + k <= s.size())//边界问题等于不可少{reverse(s.begin() + ps, s.begin() + ps + k);}}return s;
}
};

四.翻转字符串III:翻转字符串中的单词

本题LeetCode链接:
在这里插入图片描述

原理:充分运用reverse函数,首尾单词特殊处理,注意区间边界

代码实现:(含注释)

class Solution {
public:string reverseWords(string s) {int len = 0;//单词的长度int k = 0;//单词首字母下标for(int i = 0; i < s.size(); i++){if(k == 0 && s[i] == ' ')//解决第一个单词的颠倒{len = i - k; reverse(s.begin() + k, s.begin() + k + len );k = i;}if(s[i] == ' ' )//解决中间单词的颠倒{len = i - k + 1;reverse(s.begin() + k , s.begin() + k + len );k = i;}}//解决最后一个单词的颠倒int j = s.rfind(' ', s.size() - 1);reverse(s.begin() + j + 1, s.end());return s;}
};
http://www.yayakq.cn/news/151147/

相关文章:

  • 韩国优秀网站欣赏网站开源系统
  • 宿州精品网站建设网络开发与维护是做什么的
  • 网站开发项目总结范文如何下载和安装wordpress
  • 最新网站开发需求文档做网站属于印花税哪个范畴
  • 网站怎么做百度快照网站做推广的方式
  • 网站怎么推广引流一对一直播系统开发
  • 做网站有什么要求吗wordpress 阿里秀
  • 网站建设记录过程wordpress关闭
  • 明年做那些网站致富成都设计专业的装修公司
  • 小红门网站建设网站开发技术方案模板
  • cms网站群管理系统商机加盟好项目
  • 成都前几年网站建设公司长宁手机网站建设
  • 济南手机建站价格智能营销云
  • 注册企业邮箱号wordpress 优化js
  • pathon做网站网站建设要那些收费项
  • 住房和城乡建设部办公厅网站做a网站
  • 广东佛山如何制作网站公司山东青岛网站制作公司
  • 浦江县做网站加州网络公司排名
  • 网站建设要花在哪些项目上最低成本做企业网站 白之家
  • 做网站怎么收集资料网站落地页怎么做的
  • 网站规划与设计网站页面喜满堂网站建设
  • 免费的网站cmsapp与移动网站开发资料
  • 智能写作网站网站备案状态查询
  • 苏州住房建设局网站如何分析他人网站流量
  • 中国建设工程造价管理协会网站简称2023年新闻热点事件摘抄
  • 专业网站设计制作优化排名河北廊坊网站建设
  • 郑州网站推广上海建设银行官网网站首页
  • 公司网站建设需要哪些方面湖北做网站系统哪家好
  • 厦门无忧网站建设有限公司做网站年入百万
  • 个人网站怎么挣钱建设境外网站需要什么手续