软件工程师笔试题:移除||运算符后保持原代码输出一致的实现方法
替代多条件
||判断的几种可行方案 嘿,别懊恼当时没答出来!这道题其实是在考察你对条件判断优化和集合/分支语句特性的理解,咱们直接上解决方案,保证和原逻辑完全一致,还彻底移除了所有||运算符:
方案1:利用集合(首推)
把所有合法的类型值存入一个集合,然后判断输入的type是否属于这个集合——这是最简洁也最易维护的方式,后续要新增合法类型只需要往集合里加元素就行,不用改判断逻辑。
伪代码示例:
// 初始化合法类型集合 valid_types = {"string", "int", "char", "double"} // 判断并返回结果 return type in valid_types
不同语言的具体实现:
- Python:
return type in {"string", "int", "char", "double"} - Java:
return Set.of("string", "int", "char", "double").contains(type); - JavaScript:
return ["string", "int", "char", "double"].includes(type);
方案2:使用Switch分支语句
如果你的语言支持Switch的穿透特性(多个Case共享同一逻辑),也可以用这种方式,完全避开||:
以Java/C#为例:
switch(type) { case "string": case "int": case "char": case "double": return true; default: return false; }
C语言里可以先把字符串映射成枚举值再用Switch判断,核心逻辑和上面一致。
方案3:三元运算符嵌套(仅作思路参考,不推荐)
这种方式虽然能实现需求,但可读性差、维护成本高,除非特殊场景不建议使用:
// C语言示例,用strcmp比较字符串 return (strcmp(type, "string") == 0) ? true : (strcmp(type, "int") == 0) ? true : (strcmp(type, "char") == 0) ? true : (strcmp(type, "double") == 0) ? true : false;
以上三种方案都能100%还原原代码的逻辑,而且完全移除了||运算符,其中方案1是最优解,不管是可读性还是扩展性都拉满。
内容的提问来源于stack exchange,提问作者Sabbir
相关产品推荐
相关产品推荐

