我正在用Java编写一个编码问题并且我的解决方案有效,但我看到其他人在他们的博客上发布的另一个解决方案有点短,但我不明白为什么它有效.
问题是:
给定非空字符串和int n,返回一个新字符串,其中索引n处的char已被删除.n的值将是原始字符串中char的有效索引(即n将在
0..str.length()-1包括的范围内).
我的代码(适用于所有条件):
public String missingChar(String str, int n) {
return str.substring(0,n) + str.substring(n+1,str.length());
}
Run Code Online (Sandbox Code Playgroud)
其他有效的代码是:
public String missingChar(String str, int n) {
return str.substring(0, n) + str.substring(n + 1);
}
Run Code Online (Sandbox Code Playgroud)
区别在于第二行的末尾.
我的问题是为什么会str.substring(n+1)产生与之相同的结果str.substring(n+1,str.length())?
substring()方法有两个变体:
public String substring(int beginIndex)
要么
public String substring(int beginIndex, int endIndex)
子字符串以指定的字符开头,beginIndex并延伸到此字符串的末尾,endIndex - 1如果给出第二个参数,则延伸到.