把这个问题抛给温州皮鞋厂老板,老板直接就说这个题目的本意是让你提出stack的解决方案。
??what?stack?too low!
??因为这么个问题还要实现一个stack有点场面大了,事实上谁不知道你把一个个单词push进去,然后再pop出来不就好了吗?所以说stack方案太通用,不足挂齿。…周末没事干时折腾点此类问题,没有错,错在拉开蚊帐睡觉时吵醒疯子和小小,事情偶尔会变严重。
??另外,使用C语言完成和使用Java完成完全不同,Java调用现成的class会非常简单,复杂度完全隐藏在了内部。此外,C语言是否可以用strtok也必须有所约束。以下是我的方案,非常好玩,像我这种不会编程的人,请不要笑我。因为我没有用strlen,没有用strcpy,没有用malloc…:
#include <stdio.h>
#include <stdlib.h>
int ok(char c)
{
if ( (c <= 90 && c >= 65) || (c <=122 && c >= 97) )
return 1;
return 0;
}
int main(int argc, char **argv)
{
char orig[] = {‘i‘, ‘ ‘, ‘a‘, ‘m‘, ‘ ‘, ‘a‘, ‘ ‘, ‘s‘, ‘t‘, ‘u‘, ‘d‘, ‘e‘, ‘n‘, ‘t‘, ‘,‘, ‘a‘, ‘n‘, ‘d‘, ‘ ‘, ‘y‘, ‘o‘, ‘u‘, 0};
char *buf = orig, *tbuf = orig;
int i = 0, j = 0;
// 获取长度
while (*tbuf++ != 0) j++;
// 前后逆序交换
for (j--; j > i; i++, j--) {
char c = orig[i];
orig[i] = orig[j];
orig[j] = c;
}
// 遍历
while (*buf != 0) {
int k = 0, p = 0;
char *temp = buf;
while (ok(*(buf++))) {
k++;
}
// 按照单词逆序
for (k--; p < k; p++, k--) {
char c = temp[p];
temp[p] = temp[k];
temp[k] = c;
}
}
// 打印结果
printf("%s\n", orig);
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
看似个鸳鸯蝴蝶,不应该的年代。嗯?有啥不应该?
??不多说。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow
原文地址:https://www.cnblogs.com/ksiwnhiwhs/p/10389402.html
时间: 2024-10-27 05:35:33