离谱!华为员工请假一天,代价是3700
故事起源于一位华为员工的分享,透露在华为,因为请假会影响到每月的奖金和年终奖,许多员工宁愿选择利用周末加班来“调休”,以避免请假对收入的影响。在华为,周末加班的报酬是双倍工资。
换句话说,一天的请假,相当于放弃了两天的双倍日工资。根据这位员工的描述,我们可以粗略估计,华为员工的月基础工资约为37000元。
这一消息一经发布,立即在网上引起了广泛的讨论。有人感叹华为员工的高收入,有人则对比自己公司的请假政策,感慨万千。 尤其是那句“这么高的base,不是月薪3k的我应该讨论的事情”,更是引发了不少网友的共鸣,笑谈中透露出对高收入群体生活的遥远想象。
但不可否认,这样的请假代价确实很高,足以让人感到“请假很心痛”。这不仅仅是金钱上的损失,更是对个人时间、健康与工作之间平衡的一种考验。 在华为这样的高强度工作环境中,如何合理安排工作与休息,确保身心健康,成为了每一位员工都需要面对的问题。
下面是今日算法题
今日算法题,来自LeetCode的第6题:Z 字形变换,下面是我的算法思路及实现,让我们来看看吧。 算法题目 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 "PAYPALISHIRING",行数为 3 时,排列如下:
P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,如上例则为 "PAHNAPLSIIGYIR"。
算法思路
实现Z字形变换的关键是找到字符在Z字形排列中的规律,然后根据这个规律来重构字符串。以下是解决这个问题的步骤:
创建行字符串:根据给定的行数,创建相同数量的字符串,用于存放每一行的字符。
定位行索引:初始化当前行的索引为0,并设置一个标志位用于指示索引移动的方向(向下或向上)。
遍历字符:遍历输入字符串中的每一个字符,并将它添加到对应行的字符串上。
如果当前行索引为0,设置标志位,使索引向下移动。
如果当前行索引为给定行数减1,设置标志位,使索引向上移动。
根据标志位更新行索引。
合并行字符串:将所有行的字符串连接起来,形成最终的字符串。
专属福利 👉点击领取:最全Python资料合集
#include <string.h>#include <stdlib.h>char* convert(char* s, int numRows) {if (numRows == 1 || numRows >= strlen(s)) return s;char **rows = malloc(numRows * sizeof(char*));for (int i = 0; i < numRows; i++) {rows[i] = malloc((strlen(s) + 1) * sizeof(char));rows[i][0] = '\0';}int curRow = 0;int step = -1;for (int i = 0; s[i] != '\0'; i++) {strcat(rows[curRow], (char[]){s[i], '\0'});if (curRow == 0 || curRow == numRows - 1) step = -step;curRow += step;}char *ret = malloc((strlen(s) + 1) * sizeof(char));ret[0] = '\0';for (int i = 0; i < numRows; i++) {strcat(ret, rows[i]);free(rows[i]);}free(rows);return ret;}
Java实现
public String convert(String s, int numRows) {if (numRows == 1 || numRows >= s.length()) {return s;}StringBuilder[] rows = new StringBuilder[numRows];for (int i = 0; i < numRows; i++) rows[i] = new StringBuilder();int curRow = 0;boolean goingDown = false;for (char c : s.toCharArray()) {rows[curRow].append(c);if (curRow == 0 || curRow == numRows - 1) goingDown = !goingDown;curRow += goingDown ? 1 : -1;}StringBuilder ret = new StringBuilder();for (StringBuilder row : rows) ret.append(row);return ret.toString();}
Python实现
def convert(s: str, numRows: int) -> str:if numRows == 1 or numRows >= len(s):return srows = [''] * numRowscurRow, step = 0, -1for c in s:rows[curRow] += cif curRow == 0 or curRow == numRows - 1:step = -stepcurRow += stepreturn ''.join(rows)
算法解析
Z字形变换算法的时间复杂度为O(n),其中n是输入字符串的长度,因为每个字符只被处理一次。空间复杂度也为O(n),用于存储重构后的字符串。
输入:s = "PAYPALISHIRING", numRows = 3输出:"PAHNAPLSIIGYIR"
总结
Z字形变换问题展示了如何通过找到字符间的规律来解决问题,它不仅锻炼了我们对字符串的处理能力,还教会我们如何将看似复杂的问题简化。掌握这种方法,可以帮助我们更好地解决其他字符串处理问题。
热门推荐