python 字串中各單詞翻轉,保留單詞之間空格個數
阿新 • • 發佈:2019-01-07
如下字串:“wo shi zhong guo ren”, 翻轉後期望輸出:“ren guo zhong shi wo”,shi和zhong之間有兩個空格,其餘單詞之間一個空格。
用C/C++來實現的話,可以讓字串整體翻轉成,"ner oug gnohz ihs ow",然後再將每個單詞翻轉,結果為“ren guo zhong shi wo”
C/C++程式碼如下:
#include<iostream> using namespace std; void reverse_str(char *pstr) { if(NULL == pstr) { return; } char *pstart = pstr, *pcur = pstr, *pend = NULL; while (*pcur++ != '\0'); pend = pcur - 2; //減1指向字串結束符,再減1指向字串結尾 while (pstart < pend) { swap(*pstart++, *pend--); } pcur = pstr; pstart = pstr; while(*pcur++ != '\0') { if((*pcur == ' ') || (*pcur == '\0')) { pend = pcur -1; while(pstart < pend) { swap(*pstart++, *pend--); } pstart = pcur + 1; } } return; } void main() { char str[] = "wo shi zhong guo ren"; cout << str << "\n"; reverse_str(str); cout << str << "\n"; return; }
結果:
wo shi zhong guo ren
ren guo zhong shi wo
請按任意鍵繼續. . .
用python實現的話,考慮將每個單詞和空格都存在列表中,然後將列表反轉,並組合成一個字串,如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re
str = 'wo shi zhong guo ren'
str_split = re.split('(\s+)', str)
str_split.reverse()
print "".join(str_split)
結果: split的規則加括號的話,是將匹配到的規則也保留在列表中, reverse是反轉列表,然後用""和join方法將列表連線成字串。ren guo zhong shi wo