我正在用Java编写一个编码问题,我的解决方案有效,但是我看到其他人在他们的博客上发布了另一种解决方案,该解决方案虽然简短一些,但我不知道它为什么起作用。

问题是:


  给定一个非空字符串和一个int n,返回一个新字符串,其中已删除索引n处的字符。 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());
}


另一个有效的代码是:

public String missingChar(String str, int n) {
    return str.substring(0, n) + str.substring(n + 1);
}


区别就在第二行的末尾。
我的问题是为什么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

关于java - 为什么这两个子字符串调用等效?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26239657/

10-13 04:30