Implement an algorithm to determine if a string has all unique characters What if you can not use additional data structures?
如何判断字符串中是否有重复的字符?
bool isUniqueChar(string s)
{
bool h[256]={0};
for (int i=0; i<=s.size()-1; ++i)
{
if (h[s[i]]) return false;
h[s[i]] = 1;
}
return true;
}
如何将C的字符数组(char *)逆转?
Write code to reverse a C-Style String (C-String means that “abcd” is represented as five characters, including the null character )
void cStringReverse(char *s)
{
char *end = s;
char tmp;
if (s)
{
while (*end) ++end;
--end;
while (s < end)
{
*s++ = *end--;
}
}
}
如何将字符数组重复的字符去除?不允许使用额外的存储空间。
Design an algorithm and write code to remove the duplicate characters in a string without using any additional buffer. NOTE: One or two additional variables are fine. An extra copy of the array is not.
void removeDuplicateChar(char *s)
{
char *end = s+1;
char *p = s+1;
if (s)
{
while (*p)
{
char *q = s;
while (q < p)
{
if (*p == *q)
{
break;
}
++q;
}
if (p == q)
{
*end = *p;
++end;
}
++p;
}
*end = '\0';
}
}