这篇文章主要介绍了C++语言在不使用库的条件下,实现Trim函数。
面试过程中碰到问题,当时说了下思路,回来之后写代码验证了一下。
主要思想是加了一个指针,记录最后一个非空格的字符。时间复杂度为o(n)。
代码如下:
//获取字符串第一个非空格的字符
char* GetFirstNotSpace(char* str)
{
if(str == NULL)
return NULL;
char* pCurrent = str;
while(*pCurrent == ' ')
{
++pCurrent;
}
return pCurrent;
}
char* Trim(char* str)
{
if(str == NULL)
return NULL;
char* pBegin = GetFirstNotSpace(str);
char* pCurrent = pBegin;
char* pLastNotSpace = pBegin; //最后一个非空格的字符
while(*pCurrent != '\0')
{
//遇到非空格的字符,更新pLastNotSpace
if (*pCurrent != ' ')
{
pLastNotSpace = pCurrent;
}
++pCurrent;
}
*(pLastNotSpace+1) = '\0';
return pBegin;
}