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

如何设置手机网站主页网站工作室

如何设置手机网站主页,网站工作室,php网站建设心得体会,手机seo关键词优化反转字符串中的单词 题目链接 思考 这题的思路顺序是:移除多余空格(双指针法)——》反转整个字符串)——》反转字符串中每个单词。 移除多余空格(双指针法) 因为字符串开头也可能有多个字符&#xff0…

反转字符串中的单词

题目链接

思考

这题的思路顺序是:移除多余空格(双指针法)——》反转整个字符串)——》反转字符串中每个单词。

移除多余空格(双指针法)

因为字符串开头也可能有多个字符,所以我们的两个指针应该从头开始,用快指针判断当前字符是否是题目中的有效字符(非多余空格),慢的则用来将快指针指向字符赋值到自己。具体代码如下:

// 消除多余空格void eraseSpace(string& s) {int slow = 0; // 设置慢指针for(int i = 0; i < s.size(); i++) { // i相当于快指针if(s[i]!=' ') { // 当i不是空格时,即我们遇到单词的第一个字母啦if(slow!=0) s[slow++] = ' '; // 首先判断当前是不是第一个单词,因为第一个单词前面不需要空格,所以只要不是第一个单词,我们就在它前面加上空格while(s[i]!=' ' && i < s.size()) // 循环整个单词到其结尾s[slow++] = s[i++]; }}s.resize(slow);}

反转字符串

// 反转整个字符串void reverseString(string& s, int begin, int end) {for(int i = begin, j = end; i < j; i++, j--) swap(s[i], s[j]);}

反转字符串中每个单词

这应该是我们的最后一步,目的是定位到字符串中的单词,对它进行反转。这里我是用while循环到每个单词的末尾,代码随想录中是找到分隔空格来定位单词,两种方法都可以。

  • 我的:
string reverseWords(string s) {eraseSpace(s);reverseString(s, 0, s.size()-1);int begin = 0;for(int i = 0; i < s.size(); i++){if(s[i]!=' ') {while (s[i]!=' ' && i < s.size()) i++; // 循环到单词末尾reverseString(s, begin, i-1); // 反转当前单词begin = i+1; // 找到下一个单词的开头index}}return s;}
  • 代码随想录:
string reverseWords(string s) {removeExtraSpaces(s); //去除多余空格,保证单词之间之只有一个空格,且字符串首尾没空格。reverse(s, 0, s.size() - 1);int start = 0; //removeExtraSpaces后保证第一个单词的开始下标一定是0。for (int i = 0; i <= s.size(); ++i) {if (i == s.size() || s[i] == ' ') { //到达空格或者串尾,说明一个单词结束。进行翻转。reverse(s, start, i - 1); //翻转,注意是左闭右闭 []的翻转。start = i + 1; //更新下一个单词的开始下标start}}return s;

整体代码

class Solution {
public:// 消除多余空格void eraseSpace(string& s) {int slow = 0; // 设置慢指针for(int i = 0; i < s.size(); i++) { // i相当于快指针if(s[i]!=' ') { // 当i不是空格时,即我们遇到单词的第一个字母啦if(slow!=0) s[slow++] = ' '; // 首先判断当前是不是第一个单词,因为第一个单词前面不需要空格,所以只要不是第一个单词,我们就在它前面加上空格while(s[i]!=' ' && i < s.size()) // 循环整个单词到其结尾s[slow++] = s[i++]; }}s.resize(slow);}// 反转整个字符串void reverseString(string& s, int begin, int end) {for(int i = begin, j = end; i < j; i++, j--) swap(s[i], s[j]);}string reverseWords(string s) {eraseSpace(s);reverseString(s, 0, s.size()-1);int begin = 0;for(int i = 0; i < s.size(); i++){if(s[i]!=' ') {while (s[i]!=' ' && i < s.size()) i++; // 循环到单词末尾reverseString(s, begin, i-1); // 反转当前单词begin = i+1; // 找到下一个单词的开头index}}return s;}};

右旋字符串

题目链接

思考

在不利用额外空间的条件下,看似很困难,实际上沿用上题的思想就很简单。拿abcdefg, k=2举例,我们要做的是将最后两个字符放到前面去,即fgabcde。实际上我们可以把整个字符串看成两段:abcdefg

  • 首先反转整个字符串,这样一来就实现了上面两段字符的反转:gf edcba
  • 然后再分别对这两段进行反转,就得到了我们想要的:fg abcde

cpp代码

#include <iostream>
using namespace std;void reverse(string& s, int begin, int end) {for(int i = begin, j = end; i < j; i++, j--) {swap(s[i], s[j]);}
}int main() {int k;string s;cin >> k; // 获取第一行:右旋转的位数cin >> s; // 获取第二行:字符串reverse(s, 0, s.size()-1); // 字符串整体反转reverse(s, 0, k-1); //反转右旋转的字符reverse(s, k, s.size()-1); // 反转剩下的字符cout << s << endl;
}
http://www.yayakq.cn/news/464968/

相关文章:

  • app和网站哪个有优势南阳美容网站建设
  • 网站物理结构优化包含网页优化吗html 公司网站 代码下载
  • 广州seo网站推广优化上海专业网站建站公
  • wordpress 手机发文优化网站公司外包
  • 简述网站制作流程图百度浏览器网址大全
  • app网站开发教程福州网站设计培训
  • 塘沽网站优化电商网站主题
  • 没有公司 接单做网站保利建设开发总公司网站
  • 学校做网站及费用手机网站 html
  • 软件介绍下载网站建设什么职位做网站
  • 网站建设shzanen预订网站模板
  • 龙泉建设局网站关于网站开发制作的相关科技杂志的网站
  • 你认为优酷该网站哪些地方可以做的更好_为什么?西安引流推广公司
  • 无锡优化网站费用上饶做网站要多少钱
  • 腾讯wordpress郑州粒米seo外包
  • 企业网站建设方案seo关键词优化怎么做
  • 目前网站软件国外网站页头设计图片
  • 天津网站制作套餐医疗网络营销外包
  • 帮人做网站赚钱青岛网站建设方案外包
  • 工程建设的招标在哪个招标网站wordpress安装空白页
  • 网站建设结构徐水区住房和城乡建设局网站
  • 烟台商机互联做网站吗免费活动策划方案的网站
  • 做ios试玩推广网站丽江市网站建设制作
  • 1688货源网官方网站入口蓝色风格网站
  • 网站 报价单阿里云宝塔安装wordpress
  • 网上接单 网站建设饿了么网站怎么做的
  • 网站百度不收录东莞网约车租车公司
  • 重新建设网站的请示网站打开有声音是怎么做的
  • 贵阳网站建设建站解决方案如何帮人做网站
  • iframe 网站前台模板英文都不懂 学网站建设维护难吗