我正在用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());
}
其他有效的代码是:
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())
相同的结果?
答案 0 :(得分:5)
substring()方法有两个变体:
public String substring(int beginIndex)
或
public String substring(int beginIndex, int endIndex)
子字符串以指定beginIndex
处的字符开头,并延伸到此字符串的末尾,如果给出第二个参数,则延伸到endIndex - 1
。
答案 1 :(得分:0)
键入时:
str.substring(n + 1);
这意味着它会将整个字符串从索引n + 1
返回到end of the string
。
当你输入:
str.substring(n + 1, str.length());
它几乎意味着同样的事情。它将从索引
返回整个字符串
n + 1
到str.length - 1
,即直到字符串结束。
请仔细阅读文档。