Reverse String
void reverseString(char* s, int sSize) {
int left = 0,right = sSize-1;
char tmp;
while(left<right)
{
tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left+=1;
right-=1;
}
return s;
}
Reverse Words in a String
void trimMoreSpaces(char *s)
{
int cur=0,need=0;
bool first = false;
while(s[cur])
{
if(s[cur]!=' ')
{
s[need++] = s[cur++];
first = true;
}
else
{
if(first)
{
s[need++]=s[cur++];
first = false;
}
else cur++;
}
}
if (need >= 1 && s[need - 1] == ' ') s[need - 1] = 0;
else s[need] = 0;
}
void reverse(char *s,int left,int right)
{
char tmp;
while(left<right)
{
tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;right--;
}
}
void reverseWords(char *s) {
if(!s||!s[0])
return;
trimMoreSpaces(s);
if(!s[0])
return;
int end= 0;
while (s[end++]);
end -= 2;
reverse(s,0,end);
int pos = 0,i=1;
while(true)
{
if(s[i]&&s[i]!=' ')i++;
else if(s[i]==' '||!s[i])
{
int left = pos,right=i-1;
reverse(s,left,right);
if(!s[i]) return;
i++;pos=i++;
}
}
}
string to integer atoi
int myAtoi(char* s) {
if(!s)
return 0;
bool first = true;
int len = strlen(s);
int i = 0,sign=1;
while(s[i++]==' '&&i<len);
i-=1;
if(s[i]=='-')
{
sign = -1;
i++;
}
else if (s[i] == '+')
{
sign = 1;
i++;
}
first = s[i]>='0'&&s[i]<='9';
if(!first)
return 0;
long long pow = 10,result;
len = 1;
first = true;
while(s[i]>='0'&&s[i]<='9')
{
if(first)
{
if(s[i]=='0')
{
i++;
continue;
}
else
{
first = false;
i++;
}
}else
{
len++;
i++;
}
}
i-=1;
for(int j=0;j<len;j++)
{
if(j==0)
{
result = s[i] - '0';
i--;
}
else
{
if(pow>INT_MAX||result>INT_MAX)
{
if(sign==1)
return INT_MAX;
else
return INT_MIN;
}
result+=(s[i]-'0')*pow;
pow*=10;
i--;
}
}
if(result-1>=INT_MAX&&sign==-1)
return INT_MIN;
else if(result-1<(INT_MAX))
{
if(sign == -1)
return sign*result;
else if(result==INT_MAX)
return INT_MAX;
else
return result;
}else
return INT_MAX;
}