- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我更感兴趣的是为什么返回函数不起作用。与优化或我的思维方法无关。
我尝试了一个简单的程序来递归检查字符串是否是回文。
package palindrom;
public class PalindromString {
public static boolean isPalindrom(String myText) {
char f = myText.charAt(0);
char l = myText.charAt(myText.length() - 1);
if (f != l) {
return false;
}
else {
if (myText.length() > 1) {
isPalindrom(myText.substring(1, myText.length() - 1));
} else {
return true;
}
}
return true;
}
public static void main(String[] args) {
String text = "cococbc";
System.out.println(isPalindrom(text));
}
}
对于第一步,程序采用第一个“c”字符和最后一个字符,并对它们进行比较,然后再次调用该函数,这次使用“ococb”字符串。该函数采用“o”字符和“b”,比较它们,发现它们不相等,然后转到“return false;”语句,但它返回 true ?
你能帮我解决这个问题吗?我真的很想了解为什么它会这样:|。
最佳答案
it sees that they are not equal , it goes to the "return false;" statement , and yet it returns true ?
是的,isPalindrom("ococb")
返回false
,但是当该递归调用返回时,您忽略它的返回值,因此 isPalindrom("cococbc")
返回true
。您需要返回isPalindrom(myText.substring(1, myText.length() - 1))
为了解决这个问题。
除了这个问题,您还应该更改条件以要求 myText.length() is at least 3, otherwise you may pass an empty
String` 到递归调用,因为您要删除第一个和最后一个字符。
if (myText.length() >= 3) {
return isPalindrom(myText.substring(1, myText.length() - 1));
} else {
return true;
}
进行更改后,您应该删除最后的 return true;
,将不再可达。
您还可以考虑添加 null
的检查或空String
在开始时,为了使您的方法在调用 null
时不引发异常或空String
.
关于java - 返回一个回文字符串,它不是预期的字符串。背后的机制是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51808716/
我正在寻找匹配 /(?=\W)(gimme)(?=\W)/gi 或类似的东西。 \W 应该是零宽度字符来包围我的实际匹配项。 也许有一些背景。我想用添加的文字填充替换某些单词(总是 \w+),但前提是
如何在不使用 Intent 连接到 VPN 服务的情况下以编程方式检测流量是否正在通过 VPN。有系统调用吗? 最佳答案 这个有效: private boolean checkVPN() {
我是一名优秀的程序员,十分优秀!