Jef*_*ter 114
使用reverse
是过度的,因为您不需要生成额外的字符串,您只需要查询现有的字符串.以下示例检查第一个和最后一个字符是否相同,然后在字符串内部进一步检查每次检查结果.它s
会在不是回文的情况下立即返回.
该reverse
方法的问题在于它预先完成所有工作.它对字符串执行昂贵的操作,然后逐字符进行检查,直到字符串不相等为止,如果不是回文,则返回false.如果你只是一直在比较小字符串那么这很好,但是如果你想要保护自己免受更大的输入,那么你应该考虑这个算法.
boolean isPalindrome(String s) {
int n = s.length();
for (int i = 0; i < (n/2); ++i) {
if (s.charAt(i) != s.charAt(n - i - 1)) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
Pet*_*rey 24
对于最少的代码行和最简单的情况
if(s.equals(new StringBuilder(s).reverse().toString())) // is a palindrome.
Run Code Online (Sandbox Code Playgroud)
kai*_*a88 12
这是一个简单的"
public class Palindrome {
public static void main(String [] args){
Palindrome pn = new Palindrome();
if(pn.isPalindrome("ABBA")){
System.out.println("Palindrome");
} else {
System.out.println("Not Palindrome");
}
}
public boolean isPalindrome(String original){
int i = original.length()-1;
int j=0;
while(i > j) {
if(original.charAt(i) != original.charAt(j)) {
return false;
}
i--;
j++;
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以尝试这样的事情:
String variable = ""; #write a string name
StringBuffer rev = new StringBuffer(variable).reverse();
String strRev = rev.toString();
if(variable.equalsIgnoreCase(strRev)) # Check the condition
Run Code Online (Sandbox Code Playgroud)
这是一个很好的课程:
public class Palindrome {
public static boolean isPalindrome(String stringToTest) {
String workingCopy = removeJunk(stringToTest);
String reversedCopy = reverse(workingCopy);
return reversedCopy.equalsIgnoreCase(workingCopy);
}
protected static String removeJunk(String string) {
int i, len = string.length();
StringBuffer dest = new StringBuffer(len);
char c;
for (i = (len - 1); i >= 0; i--) {
c = string.charAt(i);
if (Character.isLetterOrDigit(c)) {
dest.append(c);
}
}
return dest.toString();
}
protected static String reverse(String string) {
StringBuffer sb = new StringBuffer(string);
return sb.reverse().toString();
}
public static void main(String[] args) {
String string = "Madam, I'm Adam.";
System.out.println();
System.out.println("Testing whether the following "
+ "string is a palindrome:");
System.out.println(" " + string);
System.out.println();
if (isPalindrome(string)) {
System.out.println("It IS a palindrome!");
} else {
System.out.println("It is NOT a palindrome!");
}
System.out.println();
}
}
Run Code Online (Sandbox Code Playgroud)
请享用.
归档时间: |
|
查看次数: |
195876 次 |
最近记录: |