美文网首页
1009. 说反话(stack,java字符串,指针定位)

1009. 说反话(stack,java字符串,指针定位)

作者: mztkenan | 来源:发表于2017-05-05 14:18 被阅读42次

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:

每个测试用例的输出占一行,输出倒序后的句子。

#include <iostream>

using namespace std;

int main()
{
    string sentence;
    int start,end;
    while (getline(cin,sentence))  //输入包含空格的一句话
    {
        end=sentence.length();//一个单词结束位置的后面一个空格
        start=end-1;//一个单词开始位置
        while(start!=-1){  //循环什么时候停止
          //start!=0是考虑到只有一个单词,前面不会有空格,会无限循环下去
            for (start=end-1;sentence[start]!=' '&&start!=0;start--)
            {
            }
            if(start==0){start=-1;}
            for (int i=start+1;i<end;i++)
            {
                cout<<sentence[i];  //输出单词
            }
            //cout<<"start"<<start;
            end=start;
            if(start!=-1)cout<<" ";//输出单词后的空格
        }
        

    }
    return 0;
}
//Scanner in = new Scanner(System.in);
//String[] temp = in.nextLine().split(" ");     
//发现Java有很简单的字符串处理方法        

注意事项

1.start,end初始化位置,前后端特殊点位置要考虑
2.Java有很简单的字符串处理方法
3.逆向输出,可以用栈。。。。

int main() {    
   stack v;     
   string s;
     while(cin >> s) { 
        v.push(s);     }
     cout << v.top();
     v.pop();
     while(!v.empty()) {
         cout << " " << v.top();
         v.pop();     }
     return 0; }
//喵喵喵~我不管,谁也不许偷偷复制本宝宝的博客^^~傲娇地附上原文链接: 1009. 说反话 (20)-PAT乙级真题 [http://www.liuchuo.net/archives/524](http://www.liuchuo.net/archives/524)

相关文章

网友评论

      本文标题:1009. 说反话(stack,java字符串,指针定位)

      本文链接:https://www.haomeiwen.com/subject/gwcknttx.html