Leetcode 151 - Reverse words in String - The C Language O(1) space

来源:互联网 发布:linux 查看java path 编辑:程序博客网 时间:2024/05/16 05:17
1. Trim whit-space
2. Reverse the whole string
3. Reverse every words


{


    void trim(char* sb)  
    {  
    char *pTmp = sb;  
    int headspace = sb[0] == ' ';
    
    while (*sb != '\0')   
    {  
    if (*sb != ' ')
    {  
    if (*(sb-1) == ' ' && !headspace) 
    {
    *pTmp++ = ' ';
    }
    *pTmp++ = *sb;  
    headspace = 0;
   
    ++sb;
    }  
    *pTmp = '\0';  
    }  
    
    void swapChar(char* s, int left, int right)
    {
    while (left < right)
    {
    char ch = s[left];
    s[left] = s[right];
    s[right] = ch;
    left++;
    right--;
    }
    }
    
    void reverseWords(char *s) 
    {
        int end = 0;
    int start = 0;
    int len;
    
    trim(s);
    len = strlen(s);
    swapChar(s,0,len - 1);
    
    for (;end < len; end++)
    {
    if (s[end] == ' ')
    {
    swapChar(s,start,end-1);
    start = end + 1;
    }
    }
    
    swapChar(s,start,len-1); 
    }


}
0 0
原创粉丝点击