zoukankan      html  css  js  c++  java
  • 单词的反转

    刷题,求单词的翻转。

    利用到了编程珠玑上的翻手法则。

    主要思路是先将字符串整体翻转,再在单词内部翻转(先单词翻转,在整体翻转貌似也行)。

    #include <stdio.h>
    #include <string.h>
    #include <algorithm>
    char* string_reverse(char* first, char* last) {
      char* ptr = first;
      while (first < last) {
        std::iter_swap(first++, --last);
      }
      return ptr;
    }
    char* string_word_reverse(char* first, char* last,
        const char sep_char) {
      if (first >= last) {
        return NULL;
      }
      string_reverse(first, last);
      printf("in %s
    ", first);
      char* head_ptr = first;
      char* sep_ptr = first;
      while (first < last) {
        sep_ptr = strchr(first, sep_char);
        if (!sep_ptr) {
          break;
        }
        string_reverse(first, sep_ptr);
        first = sep_ptr + 1 ;
        // skip seperator
        while (*first == sep_char) {
          ++first;
        }
      }
      return head_ptr;
    }
    int main() {
      char test_case[] ="www.sina.com....cn";
      size_t len = sizeof(test_case)/sizeof(test_case[0]);
      printf("before %s
    ", test_case);
      // ignore '';
      printf("after %s
    ", string_word_reverse(
            test_case, test_case + len - 1, '.'));
    }
  • 相关阅读:
    第二次站立会议
    小组第一次站立会议
    用户场景描述
    本周学习总结
    构建之法阅读笔记之三
    本周的学习收获
    java连接Oracle数据库
    scott用户不存在
    大二暑假第五周总结
    业务用例分析
  • 原文地址:https://www.cnblogs.com/westfly/p/3327033.html
Copyright © 2011-2022 走看看