leetcode:文字列操作
2093 ワード
文書ディレクトリ
文字列の反転
問題を解く構想.
文字列を配列に変換し、頭と尾からそれぞれ2つのポインタで遍歴交換します.
コード実装
テストアドレス
class Solution {
public:
void reverseString(vector& s) {
if( s.size() > 0 )
{
vector::iterator p = s.begin();
vector::iterator q = s.end() -1;
char tmp = ' ';
while(p
文字列内の単語数
問題を解く構想.
stringを最初から巡回し、スペースでなければflage=trueでスペースがあるときに単語を表すまでタグflageを作成して巡回します.最後に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;
}