algorithm - 通用编程逻辑 : Defining Hourly Wage Ranges

标签 algorithm

注意:这是一个一般性的编程问题,不特定于任何语言,但您可以在回答中随意使用您选择的语言来解释逻辑。

我想要一种方法来获取一串文本,比如 "Default(0-100)=20" 然后从中提取默认小时工资为 20 小时 0 到100. 这可以用来表示“Default(101-245)=25”,即 101 到 245 小时的默认小时工资为 25。还允许它定义“Brian(0-29)=15”,即用户“Brian”在 0 到 29 小时的非默认小时工资为 15。

我的第一印象是通过正则表达式来运行字符串,比如 ^(\w*)\((\d*)-(\d*)\)$拾取文本和范围的较小和较高端。

存储此信息以便日后使用的最佳方式是什么?多维数组?哈希?

一旦您存储了信息,实际使用这些信息的最佳方式是什么?

如果假设我们使用 "Default(0-100)=20""Default(101-245)=25",工作时数为 150。

最佳答案

我不是很有经验,但我试着自己回答一下,也许它可以帮助你。

对于问题的第一部分,对于像该 id 这样的字符串,只需在适当的位置拆分给定的字符串即可。大多数框架都有类来执行此操作。例如,在您的情况下是 ( ) - 和 =

结果:

默认, (, 0, -, 100, ) , =, 20

  1. 默认
  2. (
  3. 0
  4. -
  5. 100
  6. )
  7. =
  8. 20

当你使用一致的字符串格式时,你的值总是在同一个索引处。选择它们,根据需要进行转换并存储在变量中;

假设你在谈论面向对象的编程,我会在你的情况下做这样的事情:

创建一个类employee,将name和hourly-wages作为实例变量。这个类还有一个方法 calculateWageForHours(int hours)。小时工资可以存储在字典或类似的东西中 - 取决于您的框架。您将开始时间作为字典的关键字,并将投注率作为值。您不需要结束时间,因为一个费率在到达下一个“阶段”之前一直存在。

工资的计算方法大概是这样的:(具体情况肯定有更好的方法)

calculateWageForHours(int hours) {
for (int i = 0, i < dict.count - 1, i++) {
if (hours < dict[i + 1].key /* the int-value for the hour */ -1) {
float wage;
for (int j = 0, j < i, j++) {
wage += (dict[j + 1].key - 1) * dict[j].value;
}
wage += (hours - dict[i].key - 1) * dict[i].value;
return wage;
}
return calculateWageForHours(dict.lastkey - 1)
 + (hours - dict.lastkey) * dict.lastkey.value;

默认部分可以设置在您实例化员工类的程序中的任何位置。只需编写一个为员工创建默认字典的方法。 (也可以在对象初始化中完成,然后从 Controller 类中提交必要的参数)

关于algorithm - 通用编程逻辑 : Defining Hourly Wage Ranges,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3221414/

相关文章:

algorithm - 如何编写一个返回嵌套表中键列表的函数?

arrays - 给定两个无序列表,查询 A[i] > a 和 B[i] > b 的元素数

algorithm - 我该如何计算麻将中的尚滕数?

mysql - 如何按质量得分和发布日期对文章进行排序?

algorithm - 当一个节点消失时如何组织MST?

java - 回溯算法求解数独

algorithm - 字符串的局部敏感散列?

algorithm - 带递归的 Strassen 子三次矩阵乘法算法

arrays - 使用偏移量链接数组的元素

javascript - 比较运算符不起作用(Javascript)