牛客网&&华为机试&&提取不重复的整数
代码实现1
#include<iostream>
#include<string>
#include<vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main()
{
string str1;
string str2;
vector<string> vec;
int len = 0;
string temp;
int index1 = 0;
int index2 = 0;
getline(cin, str1);
len = str1.size();
index2 = len;
if (len == 0)
return 0;
for (int i = len; i > 0; --i) //从后往前操作,设置两个下标,当遇到空格符时进行相应的操作
{
if (str1[i] == ' ')
{
index1 = i + 1; //细节
for (int i = index1; i < index2; ++i)
{
cout << str1[i];
}
cout << ' ';
index2 = index1 - 1; //细节
}
}
//处理第一个单词,第一个单词需要另外考虑,可以自己草稿纸推算
for (int i = 0; i < len; ++i)
{
if (str1[i] == ' ')
{
index2 = i;
for (int i = 0; i < index2; ++i)
{
cout << str1[i];
}
// cout << endl;
break;
}
}
return 0;
}
代码实现2
//相对于代码实现1,有小改动,循环输入测试字符串
#include<iostream>
#include<string>
#include<vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
int main()
{
string str1;
string str2;
vector<string> vec;
int len = 0;
string temp;
int index1 = 0;
int index2 = 0;
while(getline(cin, str1)) //循环输入测试字符串
{
len = str1.size();
index2 = len;
if (len == 0)
return 0;
for (int i = len; i > 0; --i)
{
if (str1[i] == ' ')
{
index1 = i + 1; //细节
for (int i = index1; i < index2; ++i)
{
cout << str1[i];
}
cout << ' ';
index2 = index1 - 1; //细节
}
}
//处理第一个单词
for (int i = 0; i < len; ++i)
{
if (str1[i] == ' ')
{
index2 = i;
for (int i = 0; i < index2; ++i)
{
cout << str1[i];
}
// cout << endl;
break;
}
}
}
return 0;
}
代码实现3
#include<iostream>
#include<vector>
using namespace std;
int main(){
string s;
vector<string> vs;
while(cin >> s)
vs.push_back(s);
for(int i = vs.size()-1; i > 0; --i)
cout << vs[i] << " ";
cout << vs[0] << endl;
return 0;
}
编程笔记
- 代码实现1解题思路:1.从后往前操作,设置两个下标,当遇到空格符时进行相应的操作;2.第一个单词另外考虑,因为第一个单词前面并没有空格符。
- 代码逻辑较简单,但是需要注意一些字节问题,做这类题目可以先草稿演算一下,方便理解与设计代码。