This topic has been archived. It cannot be replied.
-
工作学习 / 专业技术讨论 / 求解, 哪位C语言大侠给写一个。要求: 反转字符串中的单词。
例如: 输入: “I am a student”
输出:“student a am I”
函数原型: char * ReverseWord(char * src)
-billhao(bill);
2007-3-15
{142}
(#3554923@0)
-
strtok()
-flyingdagger(飞刀);
2007-3-15
(#3554927@0)
-
不是, 要求在原地址空间内。 另外, strtok会把空格都虑掉的
-billhao(bill);
2007-3-15
(#3554932@0)
-
...
-niu1986(只吃草的牛);
2007-3-15
{556}
(#3555057@0)
-
还有个更扯的不想累你, 还有个更扯的。
bool TestStr(char *src1, char* src2)
输入: 任意字母的组合, 返回true.
例如: abc的组合有abc, acb, bca, cab等,任选2个作为输入,返回true.
但如果有个输入是aab, 则返回false.
-billhao(bill);
2007-3-15
{203}
(#3555151@0)
-
分别排序再进行串比较就可以啊
-wangqingshui(忘情水);
2007-3-15
(#3555582@0)
-
这是一道微软面试题,他们不要这种方法:(((
-billhao(bill);
2007-3-16
(#3555945@0)
-
排序,比较。
-frankwoo(柳五随风);
2007-3-15
(#3555666@0)
-
可以用hashtable.
-canadiantire(轮胎-pax et lux);
2007-3-16
(#3556142@0)
-
你的code怎么丢了?
-billhao(bill);
2007-3-16
(#3557513@0)
-
写得太滥,不想贴了。
-canadiantire(轮胎-pax et lux);
2007-3-16
(#3557741@0)
-
你也太谦虚了吧?
-iwantcar(恶疾,时日无多,戒网);
2007-3-16
(#3557893@0)
-
太谦虚了。
-frankwoo(柳五随风);
2007-3-16
(#3557942@0)
-
写的不滥,有时这编程还挺有意思。
-billhao(bill);
2007-3-16
(#3558021@0)
-
也是,这东西没什么技术含量。 -frankwoo(柳五随风); 3.18 17:22 (#3560494@0)
-iwantcar(恶疾,时日无多,戒网);
2007-3-21
(#3565979@0)
-
...
bool TestStr(char *src1, char* src2)
{
int n[256], m[256];
int i;
for (i = 0; i < 256; i++)
{
n[i] = m[i] = 0;
}
while (*src1)
{
n[(unsigned char)*src1++]++;
}
while (*src2)
{
m[(unsigned char)*src2++]++;
}
for (i = 0; i < 256; i++)
{
if (n[i] != m[i])
return false;
}
return true;
}
-niu1986(只吃草的牛);
2007-3-16
{424}
(#3558064@0)
-
excellent
-wangqingshui(忘情水);
2007-3-16
(#3558131@0)
-
这个比上边那道的简单多了。
-baalinca(scarb);
2007-3-17
(#3559510@0)
-
这应当是最优的了.
-wangqingshui(忘情水);
2007-3-15
(#3555584@0)
-
妙,不过这种面试题有点耍赖,如果从来接触过,不太可能很短时间想到算法。
-baalinca(scarb);
2007-3-17
(#3559504@0)
-
这么复杂?应该在5行以内就搞定了啊
-googleabcd(古狗);
2007-3-18
(#3559820@0)
-
分别从头和尾扫描 到最短的单词位置,交换内容,然后将长的单词的剩余部分移动,调整头尾位置继续递归。
-frankwoo(柳五随风);
2007-3-16
(#3555690@0)
-
Answervoid ReverseSub(char *s, char *e) {
// from billhao, thanks to billhao
while (s < e) {
char tmp = *--e;
*e = *s;
*s++ = tmp;
}
}
char *ReverseWord(char *src) {
if (src) {
ReverseSub(src, src + strlen(src));
char *s = src, *e;
while (*s) {
while (*s && *s == ' ') s++;
if (!*s) break;
e = s + 1;
while (*e && *e != ' ') e++;
ReverseSub(s, e);
s = e;
}
}
return src;
}
-tiro(新手上路);
2007-3-16
{476}
(#3557803@0)
-
详细算法 (Frankwoo说过了)
-nick_name(Nick_name);
2007-3-17
{953}
(#3558832@0)
-
简单事情复杂化。而且需要重新学习一下Big O的定义。
-niu1986(只吃草的牛);
2007-3-17
(#3558850@0)