125 验证回文串

如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后,短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。

字母和数字都属于字母数字字符。

给你一个字符串 s,如果它是 回文串 ,返回 true ;否则,返回 false 

public class 验证回文串125 {
    public static void main(String[] args) {
        String s = "0P";
        isPalindrome(s);
    }

    public static boolean isPalindrome(String s) {
        String answer = "";
        char ch;
        for(int i = 0; i < s.length(); i++){
            ch = s.charAt(i);
            if((int)ch >= 65 && (int)ch <= 90){
                ch = (char)((int)s.charAt(i) + 32);
                answer += ch;
//                Character.toLowerCase(ch); //调用字符的方法将字符转为小写
                ch = '!';
            }
            if((int)ch >= 97 && (int)ch <= 122 || (int)ch >= 48 && (int)ch <= 57){
                answer += ch;
            }

        }
        if (answer.equals("")){
            return true;
        }
        for (int i = 0, j = answer.length()-1; i < answer.length()/2 ; i++, j--){
            if (answer.charAt(i) != answer.charAt(j)){
                return false;
            }
        }
        return true;
    }
}

官方题解
class Solution {
    public boolean isPalindrome(String s) {
        StringBuffer sgood = new StringBuffer();
        int length = s.length();
        for (int i = 0; i < length; i++) {
            char ch = s.charAt(i);
            if (Character.isLetterOrDigit(ch)) {
                sgood.append(Character.toLowerCase(ch));
            }
        }
        StringBuffer sgood_rev = new StringBuffer(sgood).reverse();
        return sgood.toString().equals(sgood_rev.toString());
    }
}

在Java中,StringBuffer 是一个用于操作字符串的强大工具,它提供了一系列的方法来 append、insert、delete、replace 和 reverse 等操作字符串。使用 StringBuffer 而不是直接操作字符串字面量有以下好处:
可变性:StringBuffer 是可变的,这意味着你可以一次又一次地修改它,而不会产生新的字符串对象。这与其他不可变的字符串操作(如 + 运算符连接字符串)不同,后者每次操作都会创建一个新的字符串对象。
性能:由于 StringBuffer 直接在现有字符串上进行修改,而不是创建新的字符串,因此对于频繁的字符串修改操作,它通常比字符串连接具有更好的性能。
线程安全:StringBuffer 是线程安全的,这意味着在多线程环境中,多个线程可以同时安全地访问同一个 StringBuffer 实例,而不需要额外的同步机制。
方法丰富:StringBuffer 提供了很多有用的方法,如 append()、insert()、delete()、replace()、reverse() 等,这些方法使得操作字符串变得更加方便和高效。
避免字符串连接:在Java中,字符串是不可变的,因此每次使用 + 运算符连接字符串时,都会创建一个新的字符串对象。StringBuffer 提供了一种更有效的方式来构建和修改字符串,特别是当涉及到大量字符串操作时。

下面是一个简单的例子,展示如何使用 StringBuffer:
StringBuffer sgood = new StringBuffer();
sgood.append("Hello");
sgood.append(" ");
sgood.append("World");
sgood.append("!");
String result = sgood.toString(); // 将 StringBuffer 转换为 String
System.out.println(result); // 输出 "Hello World!"
点赞

当前页面评论已关闭。

隐藏
变装