首页 > 其他分享 >反转字符串中的单词

反转字符串中的单词

时间:2024-01-13 22:35:41浏览次数:22  
标签:空格 slow string temp int 反转 单词 字符串


最开始我是用笨方法解决的,就是新建了一个字符串,不断增加限制条件来实现的。

点击查看代码
class Solution {
public:
    string reverseWords(string s) {
string temp;
string cnt;
int sz=s.size();int j=0;
for(int i=sz-1;i>=0;i--){
    if(s[i]!=' '){
        temp.push_back(s[i]);
    }
    else {
        if(!temp.empty()){
           reverse(temp.begin(),temp.end());
           temp.push_back(' ');
           cnt+=temp;
           temp.clear();
        }
    while(i>=0&&s[i]==' '){i--;}
    ++i;
    }
  

}
while(j<s.size()&&s[j]!=' '){
    cnt.push_back(s[j]);
    ++j;
    }
if(!cnt.empty()&&cnt.back()==' '){cnt.pop_back();}
return cnt;
    }
};

但看到卡哥的方法,不用申请额外的空间就行。
类似于之前的移除元素,只不过该元素就是空格。整体代码很简洁。

点击查看代码
void removeExtraSpaces(string& s) {//去除所有空格并在相邻单词之间添加空格, 快慢指针。
        int slow = 0;   //整体思想参考https://programmercarl.com/0027.移除元素.html
        for (int i = 0; i < s.size(); ++i) { //
            if (s[i] != ' ') { //遇到非空格就处理,即删除所有空格。
                if (slow != 0) s[slow++] = ' '; //手动控制空格,给单词之间添加空格。slow != 0说明不是第一个单词,需要在单词前添加空格。
                while (i < s.size() && s[i] != ' ') { //补上该单词,遇到空格说明单词结束。
                    s[slow++] = s[i++];
                }
            }
        }
        s.resize(slow); //slow的大小即为去除多余空格后的大小。
    }

标签:空格,slow,string,temp,int,反转,单词,字符串
From: https://www.cnblogs.com/yun-che/p/17963123

相关文章

  • C++实现文件内查找字符串
    实现概要:读取放入buf后查找匹配的第一个字符然后使用seek()移动文件指针,peek()查看剩余的字符是否匹配如果剩余的字符匹配把该字符串在文件中的位置push进一个vector<int>中再继续查看剩余的文件内容//str2.cpp--capacity()andreserve()#include<iostream>......
  • 赖注入与控制反转
    赖注入与控制反转 依赖注入(DependencyInjection:DI):     程序运行过程中,如果需要调用另一个对象协助时,无须在代码中创建被调用者,而是依赖于外部的注入。     通俗来讲,就是把有依赖关系的类放到容器中,然后在我们需要这些类时,容器自动解析出这些类的实例。 ......
  • 【教3妹学编程-算法题】构造限制重复的字符串
    3妹:“太阳当空照,花儿对我笑,小鸟说早早早,你为什么背上炸药包”2哥:3妹,什么事呀这么开森。3妹:2哥你看今天的天气多好啊,最近一周都是大晴天,艳阳高照2哥:是啊,天气不冷不热的,很适合生活3妹:据说南方的小土豆都跑到北方滑雪了,哈哈哈哈2哥:泼水成冰好玩是好玩,但是一定要注意防寒哦,看新闻都有......
  • SQL SERVER日期时间转字符串
    SQLSERVER日期时间转字符串一、sql server日期时间函数--当前系统日期、时间selectgetdate()--dateadd在向指定日期加上一段时间的基础上,返回新的datetime值--例如:向日期加上2天selectdateadd(day,2,'2004-10-15')--返回:2004-10-1700:00:00.000--datediff......
  • 【教3妹学编程-算法题】统计出现过一次的公共字符串
    3妹:哈哈哈哈哈哈,太搞笑了~呵呵呵呵呵呵2哥:3妹干嘛呢,笑的这么魔性!3妹:在看王牌对王牌,老搞笑了2哥:这季好像没有贾玲吧。3妹:是啊,听说贾玲去导电影了,还狂瘦了100斤呢,哎,我也该减减肥了。2哥:切,你每隔几天就会说要减肥,也没见你减啊3妹:不吃饱哪有力气减肥,我每天还要刷题、找工作,多辛苦啊......
  • 筛选列表中的元素 与 删除元素中的字符串 的区别
    字符串分割为列表re.split(pat,string)pandas.Series([string]).astype(str).str.split(pat)先删除字符串首尾字符串,再分隔re.split(pat,string2.sptrip())先删除字符串中的字符串,再分隔re.split(pat,string.replace(string2,"")筛选列表中的元素[itemforiteminlisif......
  • `^`是一个正则表达式元字符,用于匹配字符串的开头。例如,`^hello`可以匹配以"hello"开头
    ^是一个正则表达式元字符,用于匹配字符串的开头。例如,^hello可以匹配以"hello"开头的字符串。在正则表达式中,^还可以用于否定字符集,例如,[^abc]可以匹配除了"a"、“b”、"c"以外的任何字符。希望这可以帮助你!......
  • python第三节:Str字符串类型(4)
    str.islower()判断是否都是小写字符。字符串不必都是小写字母,但是至少要有一个可以判断大小写的字符。例子:str1='abc'str2='aBcd'str3='字符a'str4='12'str5='df43'str6='字符Bcd'print(str1.islower())print(str2.islower())......
  • python 串联所有单词的子串 多种解法
    解法一:使用递归deffind_substrings(s,words):ifnotsornotwords:return[]word_length=len(words[0])num_words=len(words)total_length=word_length*num_wordssubstrings=[]deffind_substrings_helper(s,......
  • C 语言结构体和枚举完全指南:成员访问、字符串操作、枚举基础
    访问结构体成员要访问结构体的成员,请使用点语法(.)://创建名为myStructure的结构体structMyStructure{intmyNum;charmyLetter;};intmain(){//创建名为s1的myStructure的结构体变量structMyStructures1;//为s1的成员分配值s1.myNum=......