编程题——逆置字符串
题目描述: 将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I 输入描述: 每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100 输出描述: 依次输出倒置之后的字符串,以空格分割
示例: 输入 I like beijing. 输出 beijing. like I
这里提供三种思路,如有错误欢迎指正:
程序代码如下:
#include <iostream>
#include <string>
using namespace std
;
#if 0
int main()
{
int j
= 0;
string str1
,str2
;
getline(cin
, str1
);
for (int i
= 0; i
< str1
.size(); ++i
)
{
if (str1
[i
] == ' ')
{
j
= 0;
str2
.insert(j
, 1, ' ');
}
else
{
str2
.insert(j
, 1, str1
[i
]);
++j
;
}
}
cout
<< str2
<< endl
;
return 0;
}
#endif
#if 0
int main()
{
string str1
;
getline(cin
, str1
);
reverse(str1
.begin(), str1
.end());
auto start
= str1
.begin();
while (start
!= str1
.end())
{
auto end
= start
;
while (end
!= str1
.end() && *end
!= ' ')
++end
;
reverse(start
, end
);
if (end
== str1
.end())
start
= end
;
else
start
= end
+ 1;
}
cout
<< str1
<< endl
;
return 0;
}
#endif
#if 1
int main()
{
string str1
, str2
;
cin
>> str2
;
while (cin
>> str1
)
{
str2
= str1
+ " " + str2
;
}
cout
<< str2
<< endl
;
return 0;
}
#endif
程序运行结果如下: