leetcode:문자열 작업
2069 단어 면접 프로그램
문제풀이의 방향
문자열을 수조로 바꾸고 두 바늘로 각각 머리와 꼬리에서 반복해서 교환합니다.
코드 구현
테스트 주소
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을 반복합니다. 빈칸이 아니면 플래그를 표시해서 플래그=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;
}