我不知道 String 对象的 IndexOf() 方法是如何工作的,所以我想知道以下 2 个实现中哪个优于另一个:
首先,我想介绍一下这个问题,简单来说,这里实现的函数/方法有一个字符作为唯一参数,它应该给出/返回另一个与传入的字符对应的字符。(匹配规则源字符集合和目标字符集合如下所示):
a <=> 9
b <=> 8
c <=> 7
d <=> 6
e <=> 5
f <=> 4
g <=> 3
h <=> 2
i <=> 1
j <=> 0
请注意,上述规则只是为了易于遵循而制定的,它不是固定规则,它可以是任何规则,因此不要基于该规则以其他方式实现这些方法。
现在是我想比较的两种方法:
1.第一个很短,基于IndexOf()
string source = "abcdefghij";
string destination = "9876543210";
public char SourceToDest(char c){
return destination[source.IndexOf(c)];//Suppose the c is always in source.
}
2.第二个较长,使用switch case:
public char SourceToDest(char c){
switch(c){
case 'a': return '9';
case 'b': return '8';
case 'c': return '7';
case 'd': return '6';
case 'e': return '5';
case 'f': return '4';
case 'g': return '3';
case 'h': return '2';
case 'i': return '1';
case 'j': return '0';
}
}
正如我之前提到的,该规则是为了易于遵循而制定的,如果没有注意到这一点,您可能还有这样的另一种方法:
public char SourceToDest(char c){
return (char)(154 - (int)c); //154 = 106 + 48
}
如果您有另一种方法优于我介绍的两种方法,请与我分享。