对于一个字符串,请设计一个算法,只在字符串的单词间做逆序调整,也就是说,字符串由一些由空格分隔的部分组成,你需要将这些部分逆序。

给定一个原字符串A和他的长度,请返回逆序后的字符串。

测试样例:

"dog loves pig",13

返回:"pig loves dog"

python实现

class Reverse:    def reverseSentence(self, A, n):        # write code here        Alist = list(A)        Alist.append(' ')        res = []        tmpstr = ""        for i in xrange(len(Alist)):            if Alist[i]!=' ':               #不是空格,字符串累加                tmpstr = tmpstr + Alist[i]            else:                if Alist[i]==' ':           #是空格,将字符串放入list                    res.append(tmpstr)                    tmpstr = ""        res.reverse()                       #整体反转        return ' '.join(res)def main():    A="dog loves pig"    t = Reverse()    print t.reverseSentence(A, len(A))if __name__ == "__main__":    main()

C++实现

class Reverse {public:    string reverseSentence(string A, int n) {        // write code here        vector
 sv(1);        int tag = 0;        for (int i = 0; i < A.length(); ++i)        {            if (A[i] == ' ')            {                tag++;                sv.resize(tag+1);                continue;            }            sv[tag] = sv[tag] + A[i];         }        reverse(sv.begin(),sv.end());        A.clear();        for (int i = 0; i < sv.size();i++)        {            //cout << sv[i] << " ";            if (i != sv.size()-1)                A = A + sv[i] + " ";            else                A = A + sv[i];        }        return A;    }};