[备忘]倒置字符串中的单词
星期二, 八月 18th, 2009 - 10:24 下午 - 编程
输入:一个字符串,单词用某个特定符号分割(比如空格)
输出:一个字符串,单词顺序和原串相反
看到倒置,一般的做法是用栈,要么自己建个数组、要么STL,或者递归用程序栈。
优雅的递归
void reverse_token() { char str[MAX] = {0}; if (scanf("%[^#]", str) != EOF) { //利用scanf的正则式特性 getchar(); reverse_token(); printf("%s ", str); } }
STL list
void reverse_token() { char tmp[MAX]; list<string> stack; while (cin.getline(tmp, MAX, '#')) stack.push_front(string(tmp)); copy(stack.begin(), stack.end(), ostream_iterator<string>(cout," ")); }
如果是处理字符串, 而不是stdin, 可以改用sscanf()或者STL的范型算法find, 更标准的做法是strtok()。想到了javascript里的String().split(‘x’),直接返回一个分割后的数组,相当的方便。






