作者: ahuustcly | 来源:发表于2018-10-21 12:33 被阅读0次

    1.给定两个字符串,求出它们之间最长公共子串

    2.输入一个英文句子,翻转句子中单词的顺序,但是单词中的字符顺序不变

    void reverse(char *pStart, char *pEnd)
    {
        char temp;
        if (NULL == pStart || NULL == pEnd)
        {
            return;
        }
        while (pStart < pEnd)
        {
            temp = *pStart;
            *pStart = *pEnd;
            *pEnd = temp;
            
            pStart++;
            pEnd--;
        }
    }
    
    /*
    输入一个英文句子,翻转句子中单词的顺序,但是单词内的字符顺序不变
    用例:
    ①句子中有多个单词、一个单词
    ②NULL、字符串指向的内容为空、字符串只有空格
    */
    char *reverseSentence(char *pSentence)
    {
        if (NULL == pSentence || strlen(pSentence) <= 1)
        {
            return pSentence;
        }
    
        char *pStart = pSentence;
        char *pEnd = pSentence + strlen(pSentence) - 1;
        reverse(pStart, pEnd);
    
        pStart = pEnd = pSentence;
        while (*pStart != '\0')
        {
            if ((*pEnd <= 'z' && *pEnd >= 'a') ||
                (*pEnd <= 'Z' && *pEnd >= 'A'))//正常单词字符
            {
                pEnd++;
            }
            else if (pStart != pEnd)
            {
                reverse(pStart, pEnd-1);
                if (*pEnd != '\0')
                    pStart = ++pEnd;
                else
                    break;
            }
            else
            {
                pStart = ++pEnd;
            }
        }
        return pSentence;
    }
    
    

    相关文章

      网友评论

          本文标题:

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