将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符
数据范围:输入的字符串长度满足
注意本题有多组输入
将一个英文语句以单词为单位逆序排放。例如“I am a boy”,逆序排放后为“boy a am I”
输入一个英文语句,每个单词用空格隔开。保证输入只包含空格和字母。
得到逆序的句子
I am a boy
boy a am I
nowcoder
nowcoder
data=raw_input("").split() data.reverse() str="" for i in range(len(data)): if(i<len(data)-1): str=str+data[i]+" " else: str+=data[i] print str 下面是C++写的代码 #include<iostream> #include<string> #include<stack> using namespace std; int main() { string str; stack<string>ss; getline(cin, str); //cout << str << endl; int len = str.length(); string str1 = ""; for (int i = 0; i < len; i++) { if (str[i] == ' ') { if (i + 1 < len&&str[i + 1] != ' ') { ss.push(str1); str1 = ""; } } if (i == len - 1 && str1.length() != 0) { if (str[i] != ' ') { str1 += str[i]; } ss.push(str1); } else { if (str[i] != ' ') { str1 += str[i]; } } } while (!ss.empty()) { cout << ss.top(); ss.pop(); if (!ss.empty()) { cout << " "; } } //system("pause"); return 0; } 这段代码处理比较全,多个空格也没问题的,前面后面随意加空格也是没问题的哈
import java.util.*; public class Main { public static void main(String args[]){ Scanner cin=new Scanner(System.in); while(cin.hasNext()){ String s=cin.nextLine(); String[] array=s.split("[^a-zA-Z]"); List<String> list= Arrays.asList(array); Collections.reverse(list); for(String each:list.subList(0,list.size()-1)){ System.out.print(each+" "); } System.out.println(list.get(list.size()-1)); } } }
#include<iostream> #include<string> using namespace std; int main() { string s1; getline(cin,s1); s1=s1+' '; int end=s1.length()-1; for(int i=s1.length()-1;i>=0;i--) { if(s1[i]==' ') { for(int j=i+1;j<=end;j++) { cout<<s1[j]; } end=i; } } for(int j=0;j<=end;j++) { cout<<s1[j]; } }
#include<stdio.h> #include<string> #include<map> #include<iostream> #include<math.h> using namespace std; int main(){ string strs; getline(cin,strs); for(int i = strs.length()-1;i>=0;i--){ if(strs[i]==' ' ){ int j =i; while(strs[j+1]!=' ' && strs[j+1]!='\0'){ cout<<strs[j+1]; j++; } cout<<strs[i]; } } int start=0; while(strs[start]!=' ') { cout<<strs[start]; start++; } }
import java.util.*; public class Main{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); String str = sc.nextLine(); String[] strArr = str.split("\\s+"); StringBuilder sb = new StringBuilder(); int len = strArr.length-1; for(int i = len; i >= 0; i--){ if(i==len){ sb.append(strArr[i]); }else{ sb.append(" "+strArr[i]); } } System.out.println(sb); } }
def ReverseWord(string): lst = string.split()[::-1] for i in lst: print(i,end=' ') if __name__=='__main__': s = input() ReverseWord(s)
import java.util.*; //从后往前遍历用双指针截取单词 public class Main{ public static void main(String[] args){ Scanner sc = new Scanner(System.in); String s = sc.nextLine(); char[] c = s.toCharArray(); StringBuilder res = new StringBuilder(); int j = s.length()-1,i = j; while(i >= 0){ while(i >= 0 && s.charAt(i)!= ' ') i--;//搜索首个空格 res.append(s.substring(i+1, j+1) + ' ');//添加单词 while(i >= 0 && s.charAt(i) == ' ') i--;//跳过单词间空格 j = i; } System.out.println(res.toString().trim());//最后添加的一个单词有空格 } }
print(' '.join(input().split()[::-1]))
#include <iostream> #include <string> #include <sstream> #include <vector> using namespace std; int main(){ string str; while(getline(cin,str)){ vector<string> vec; stringstream ss; ss<<str; while(ss>>str){ vec.push_back(str); } for(auto it=vec.rbegin();it!=vec.rend();++it){ cout<<*it<<' '; } cout<<endl; } }
s_list = input().split() s_list.reverse() print(' '.join(s_list))
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while(in.hasNext()){ StringBuffer str = new StringBuffer(); String[] split = str.append(in.nextLine()).reverse().toString().split(" "); for (String s :split){ str.setLength(0); str.append(s); System.out.print(str.reverse()+" "); } } } }
#include<iostream> using namespace std; int main() { string str[1000]; int i=0; while(cin >> str[i]) i++; for(i-=1;i>=0;i--) cout << str[i] << " "; }