问题标题: 酷町堂:1140 字符串倒转

1
0

0
已采纳
李瑞曦
李瑞曦
高级天翼
高级天翼

核心:

if(s[i-1]==' ' && s[i]!=' ') 
    p=i;//起始位置
if(s[i+1]==' ' && s[i]!=' '){
    a=s.substr(p,i-p+1);//提取单词
    for(int j=a.size()-1;j>=0;j--)//倒序输出提取的单词a
        cout<<a[j];
    }
if(s[i]==' ') //如果是空格就直接输出
    cout<<s[i];
//以上代码是在循环里的

 

李瑞曦在2020-08-08 20:27:11追加了内容

输入s后还要再s的首尾加空格

李瑞曦在2020-08-08 20:31:42追加了内容

思路很简单,是空格就直接输出,遇到单词就先截取再倒序输出

0
0
李瑞曦
李瑞曦
高级天翼
高级天翼

不能问作业!!!

李瑞曦在2020-08-08 20:14:33追加了内容

老师上课时说了!!!

0
朱子尘
朱子尘
初级光能
初级光能
  • //在字符串前面和后面加空格
  • s=      ;
  • //遍历字符串
  • for(int i= ;i<  ;i++)
  • {
  • /截取单词
    • ​​​​​​​if(s[]==' '&&s[]!=' ') f=i;
    •  if(s[]==' '&&s[]!=' '){
      • l=i;
      • //截取
      • string b=s.substr(,);
      • //倒序遍历
      • for(int j=;j>=;j--)
      •      cout<<b[j];
      • }
      • //如果是空格,输出
      • if(s[i]==' ')
      •   cout<<" ";
  • }
0
康曦
康曦
中级光能
中级光能

核心·

string s;
     int front=0;
     getline(cin,s);
     s=' '+s+' ';
     for(int i=1;i<s.size();i++){
         if(s[i-1]==' '&&s[i]!=' '){
            front=i;
         }
         if(s[i+1]==' '&&s[i]!=' '){
             for(int j=front;j<(i-front+1)/2+front;j++)
             {
                 swap(s[j],s[i+front-j]);
             }
         }
     }
     s.erase(0,1);
     s.erase(s.size()-1,1);

PS:怎么总感觉你们班的答案大部分是我给的(滑稽保命)

我要回答