字符串反转
解题思路
将字符串转化为数组,用双指针分别从头部和尾部进行遍历交换。
代码实现
class Solution {
public:
void reverseString(vector<char>& s) {
if( s.size() > 0 )
{
vector<char>::iterator p = s.begin();
vector<char>::iterator q = s.end() -1;
char tmp = ' ';
while(p<q)
{
tmp = *p;
*p = *q;
*q = tmp;
p++;
q--;
}
}
}
};
字符串中的单词数
解题思路
从头遍历string,如果不是空格就做一个标记flage继续遍历,直到flage=true并且有一个空格时表示一个单词。记得最后判断一下flage是否为true,如果为true,则count++,因为最后一个没有空格。
解题代码
class Solution {
public:
int countSegments(string s) {
bool flage = false;
int count = 0;
int i = 0;
while (s[i] != '\0')
{
if(s[i] != ' ') flage = true;
if(flage && s[i] == ' ')
{
count++;
flage = false;
}
i++;
}
if(flage) count++;
return count;
}
};
string转化为char[]
strcpy的实现
代码实现
char * strcpy( char *strDest, const char *strSrc )
{
assert( (strDest != NULL) && (strSrc != NULL) ); //判断一下指针不为空
char *address = strDest; // 用于之后返回char*,返回char* 便于链式操作
while( (*strDest++ = * strSrc++) != ‘\0’ ); //将strsrc逐个字符复制给strDest知道'\0'
return address;
}
strncpy的实现
char * strcpy( char *strDest, const char *strSrc, int n )
{
assert( (strDest != NULL) && (strSrc != NULL) ); //判断一下指针不为空
char *address = strDest; // 用于之后返回char*,返回char* 便于链式操作
int i = 0;
while( i++ < n && (*strDest++ = * strSrc++) != ‘\0’ ); //将strsrc逐个字符复制给strDest知道'\0'
if(strDest!='\0') strDest = '\0';
return address;
}