• 优雅地翻转数组


    引言

    原文地址:优雅地翻转数组

    欢迎访问我的博客: http://blog.duhbb.com/

    感觉自己的代码写的不简洁, 而且容易出错, 搞得每次都很赶一样.

    翻转的写法

    题目很简单, 但是有个地方可以学习下: 就是数组翻转.

    之前我喜欢这么写:

    for (int k = j; k <= (i+j)/2; k++) {
        char tmp = s[k];
        s[k] = s[i - (k - j)];
        s[i-(k-j)] = tmp;
    }
    

    今天看了 leetcode 上的解答, 原来这么写更优雅, for 循环写的看上去就比较复杂, 还容易出错.

    int left = start, right = i - 1;
    while (left < right) {
        swap(s[left], s[right]);
        left++;
        right--;
    }
    
    #include <iostream>
    #include <vector>
    #include <climits>
    
    #include <bits/stdc++.h>
    
    using namespace std;
    
    
    
    class Solution {
    public:
      string reverseWords(string s) {
    
        int i = 0, j = 0;
    
        while(true) {
          while (s[i+1] != ' ' && s[i+1] != '\0') {
            i++;
          }
          // 这个 for 循环写的就很丑, 而且还容易出错
          for (int k = j; k <= (i+j)/2; k++) {
            char tmp = s[k];
            s[k] = s[i - (k - j)];
            s[i-(k-j)] = tmp;
          }
    
          if (! s[i+1]) {
            break;
          }
    
          i += 2;
          j = i;
        }
    
        return s;
      }
    };
    
    int main() {
      Solution s;
      cout << s.reverseWords("hello world") << endl;
      return 0;
    }
    

    结束语

    原文地址:优雅地翻转数组

    欢迎访问我的博客: http://blog.duhbb.com/

    写了再多的业务不注意提炼和总结, 感觉越写越迷糊, 其实停下来看看别人写的代码也许收获会更多.

  • 相关阅读:
    acwing272. 最长公共上升子序列
    哈夫曼编码简单实现
    Linked List Sorting
    jmeter-线程组
    css-书写规范
    mysql-踩坑记录
    vue-npm install
    css-选择器
    js-process对象
    linux-常用命令
  • 原文地址:https://www.cnblogs.com/tuhooo/p/16410186.html
Copyright © 2020-2023  润新知