给定一个字符串,逐个翻转字符串中的每个单词

来源:互联网 发布:北京邮电大学 网络 编辑:程序博客网 时间:2024/06/06 03:56
说明

  • 单词的构成:无空格字母构成一个单词
  • 输入字符串是否包括前导或者尾随空格?可以包括,但是反转后的字符不能包括

  • 如何处理两个单词间的多个空格?在反转字符串中间空格减少到只含一个

开始写了一个  没过测试,不过可以翻转,只是空格多了没有处理,代码如下
class Solution {public:/*** @param s : A string* @return : A string*/string reverseWords(string s) {// write your code hereint len = s.size();char *str = new char[len];strcpy(str, s.c_str()); char temp;int i = 0, j = 0;for (i = 0, j = len - 1; i < j; i++, j--){temp = str[i];str[i] = str[j];str[j] = temp;}cout << str << endl;int k = 0;while (k < len){i = j = k;while (str[j] != ' ' && str[j] != '\0'){j++;}k = j + 1;j--;for (; i < j; i++, j--){temp = str[i];str[i] = str[j];str[j] = temp;}while (str[k] == ' '){k++;}}return str;}};
想了很久没想到应对的策略,就从网上找了下 ,找了一个对的,贴出代码来,是转的别人的
class Solution {public:    /**     * @param s : A string     * @return : A string     */    string reverseWords(string s) {        // write your code here        string word, line;        int size=s.size();        int i=size-1, j, begin=size-1, end=size-1;        if(s.empty())            return string();        while(i >= 0)        {            while(s[i]==' ' && i>=0) {                begin--;                end--;                i--;            }            while(s[i]!=' ' && i>=0) {                begin--;                i--;            }            word.resize(0);            for(j=begin+1; j<=end; j++){                 word.append(1, s[j]);            }            if(begin == 0)                line = line + word;            else                line = line + word + " ";            end = begin;        }        return line;    }};



阅读全文
0 0
原创粉丝点击