牛客網 - 線上程式設計 - 華為機試 - 單詞倒排
阿新 • • 發佈:2018-11-21
題目描述
對字串中的所有單詞進行倒排。
說明:
1、每個單詞是以26個大寫或小寫英文字母構成;
2、非構成單詞的字元均視為單詞間隔符;
3、要求倒排後的單詞間隔符以一個空格表示;如果原字串中相鄰單詞間有多個間隔符時,倒排轉換後也只允許出現一個空格間隔符;
4、每個單詞最長20個字母;
輸入描述:
輸入一行以空格來分隔的句子
輸出描述:
輸出句子的逆序
示例1
輸入
I am a student
輸出
student a am I
C++:
思路:建立陣列存放元素,如果當前不是字母,直到下一個是字母時,存放空格;如果當前是字母,直到下一個不是字母,變換為字串存放。另外判斷首個元素是否是空格,是的話刪除。最後倒序輸出。
#include<iostream>
#include<string>
#include<ctype.h> //isalpha(),isspace()
#include<vector>
using namespace std;
int main()
{
string s;
while (getline(cin, s))
{
string output = "";
vector<string> result;
int n = s.size();
for (int i = 0; i < n; i++)
{
if (!(isalpha(s[i])))
{
if (i < n - 1 && isalpha(s[i + 1]))
result.push_back(" ");
}
else
{
string temp = "";
while (isalpha (s[i + 1]))
{
temp += s[i];
i++;
}
temp += s[i];
result.push_back(temp);
temp = "";
}
}
if (result[0] == " ") result.erase(result.begin()); //刪除元素
for (int i = result.size() - 1; i >= 0; i--)
{
cout << result[i];
}
}
return 0;
}
Python:
思想:不是字母的替換空格,然後split()
,最後''.join()
while True:
try:
s = input()
for i in s:
if not i.isalpha():
s = s.replace(i, ' ')
print(' '.join(s.split()[::-1]))
except:
break