IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

倒置字符串中的单词

Programming Life with Music 2009-11-17 23:14:56 累计浏览 3,605 次
本机暂存

输入:一个字符串,单词用某个特定符号分割(比如空格)
输出:一个字符串,单词顺序和原串相反

看到倒置,一般的做法是用栈,要么自己建个数组、要么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'),直接返回一个分割后的数组,相当的方便。

同分类推荐文章

  1. 对基本有序的序列排序算法 (2026-06-11 17:46:49)
  2. Four Levels Of Customer Understanding (2026-05-22 21:00:00)
  3. 除法的意义 (2026-04-12 20:52:17)

查看更多 算法 文章 →

建议继续学习

  1. 为什么Fibonacci数列相邻两项之比会趋于0.618? (累计阅读 5,321)
  2. string替换所有指定字符串(C++) (累计阅读 4,300)
  3. 看来看去都是看数学书 (累计阅读 4,135)
  4. 腾讯php程序员面试题目答案――编程任务 (累计阅读 4,079)
  5. 小心递归次数限制 (累计阅读 4,040)
  6. Java将Object对象转换为String的总结合集 (累计阅读 3,813)
  7. 在2048里能够得到的最大的数是多少? (累计阅读 3,797)
  8. PHP截取汉字出现乱码的解决方法 (累计阅读 3,759)
  9. 重构发现:指针操作问题 (累计阅读 3,604)
  10. javascript正则表达式教程 (累计阅读 3,435)