美文网首页程序员C语言Leetcode
LeetCode-557. Reverse Words in a

LeetCode-557. Reverse Words in a

作者: 去留无意hmy | 来源:发表于2017-07-20 23:28 被阅读57次

    问题描述
    Given a string, you need to reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

    Example 1:

    Input: "Let's take LeetCode contest"
    Output: "s'teL ekat edoCteeL tsetnoc"
    

    Note: In the string, each word is separated by single space and there will not be any extra space in the string.

    题目分析

    本题要求将一个句子中每个单词的字母逆序排列,而句子中单词的相对位置并不发生变化。其中,单词与单词之间使用单个空格隔开。

    解题思路

    单词之间以空格隔开,因此通过空格来确定每个单词,然后将单词中的字母逆序排列。对于第一个单词起始位置为零,直到查找到第一个空格i,此时i-1即为单词的末尾,单词长度为i,然后将该单词逆序。下一个单词的位置为上一个空格位置加一即i+1,找到下一个空格的位置j,则该单词的末尾为j-1,单词长度为j-i-1然后再将该单词逆序。依次将所有单词逆序。

    程序实现(C语言)

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    char* reverseWords(char* s) 
    {
        int start=0,end=0,j=0,i=0;
        int strl=strlen(s) ;
        char *result; 
        result = (char* )malloc(sizeof(char)*(strl+1));
        printf("%d\n",strlen(s));
        printf("%c\n",*(s+strlen(s)));
        for (i=0;i<=strl;i++)
        {
            if (s[i]==32 || i==strl)                    //最后一个单词末尾为句子长度值-1
            {
                end=i-1;
                for (j=start;j<=end;j++)
                {
                    result[j]=s[end-j+start];           //单词逆序
                    printf("%c\n",result[j]);
                }
                result[i]=' ';                         //单词之间空格
                start=i+1;                             
                printf("%c\n",result[i]);
            }
        }
        result[strl]='\0';
        return result;
    }
    
    int main()
    {
        char *strs="Let's take LeetCode contest";
        char *restrs;
        char *result;
        result=reverseWords(strs);
        printf("%s",result);
        return 0;
    }
    

    参考文献
    [1] https://leetcode.com/problems/reverse-words-in-a-string-iii/#/description
    [2] http://blog.csdn.net/yanqueen2011/article/details/70139408

    相关文章

      网友评论

        本文标题:LeetCode-557. Reverse Words in a

        本文链接:https://www.haomeiwen.com/subject/paqskxtx.html