力扣L12--- 125验证回文串(java版)-2024年3月15日

2024-03-19 1129阅读

温馨提示:这篇文章已超过369天没有更新,请注意相关的内容是否还可用!

1.题目

力扣L12--- 125验证回文串(java版)-2024年3月15日

2.知识点

注1:在 Java 中,toString() 方法用于将对象转换为字符串表示形式。对于数组对象,toString() 方法将返回数组的字符串表示形式,其中包含数组中每个元素的字符串表示形式,以逗号分隔,并且包含在方括号中。

//toString 字符变成字符串

// 测试示例
        char[] s = {'H', 'e', 'l', 'L', 'o'};
        solution.toLowerCase(s);
        System.out.println(Arrays.toString(s));
         // 输出 ["h", "e", "l", "l", "o"]

注2:if (Character.isUpperCase(s[i])) // 检查字符是否为大写字符

s[i] = Character.toLowerCase(s[i]); // 将大写字符转换为小写字符

将字符数组中的所有大写字符转换为小写字符 步骤
用Character.isUpperCase(s[i])查找字符是不是大写的
再用Character.toLowerCase(s[i]) 将大写字符换成小写字符

注3:并移除所有非字母数字字符之后

Character.isLetterOrDigit(s[i]) 是 Java 中的一个方法调用,用于检查给定的字符 s[i] 是否是字母或数字字符。

具体来说,Character.isLetterOrDigit() 方法返回一个布尔值,表示给定的字符是否是字母或数字字符。如果字符是字母(大写或小写)或数字字符,则返回 true,否则返回 false。

import java.util.Arrays;
public class Solution {
    public static void main(String[] args) {
        char[] s = {'H', 'e', 'l', 'l', 'o', '!', '2', '#', 'w', 'o', 'r', 'l', 'd'};
        removeNonAlphanumeric(s);
        System.out.println(Arrays.toString(s)); // 输出 ["H", "e", "l", "l", "o", "2", "w", "o", "r", "l", "d"]
    }
    
    public static void removeNonAlphanumeric(char[] s) {
        int count = 0;
        for (int i = 0; i  

注4:**count++ 是一个后缀递增操作符。它的作用是先将 count 的当前值用于赋值给 s[i],然后再将 count 的值递增 1。**这样,s[i] 就被赋值为 s[count] 的当前值,然后 count 递增,指向下一个位置。

所以,s[count++] = s[i] 的含义是将字符数组 s 中的第 i 个位置的字符赋值给 s 中的第 count 个位置,并将 count 递增。这样就实现了将字母或数字字符移到数组的前面。

注5:Java 中的字符串是不可变的,所以您不能直接对字符串进行修改。需要使用 StringBuilder 或者其他可变的数据结构来实现字符串的修改操作。

Character.isUppercase(s[i]) 是错误的方法调用,应该是 Character.isUpperCase(s.charAt(i))。

Character.isLetterorDigit(s[i]) 也是错误的方法调用,应该是 Character.isLetterOrDigit(s.charAt(i))。

Character.toLowecase(s[i]) 是错误的方法调用,应该是 Character.toLowerCase(s.charAt(i))。

cnt[i++]=s[i] 是错误的用法,因为 cnt 应该是一个整数变量,而不是数组。

注6:for (int i = 0; i

char ch = s.charAt(i);

if (Character.isLetterOrDigit(ch)) {

sb.append(Character.toLowerCase(ch));

}

}

        StringBuilder sb = new StringBuilder();
        // 将字符串转换为只包含字母数字字符的形式,并转换为小写
        for (char ch : s.toCharArray()) {
            if (Character.isLetterOrDigit(ch)) {
                sb.append(Character.toLowerCase(ch));
            }
        }

注6:回文串用左右指针,然后再用charAt()方法

3.代码实现

class Solution {
    public boolean isPalindrome(String s) {
        
       StringBuilder sb=new StringBuilder();//StringBuilder存储的是可变的字符结构
        for(int i=0;i
            char ch=s.charAt(i);//字符
            if(Character.isLetterOrDigit(ch))//判断是不是字符
           { sb.append(Character.toLowerCase(ch));}
            
        }
        //判断是不是回文串
        int left=0;//左指针指向起始位置
        int right=sb.length()-1;//右指针指向末尾位置
        while(left
         if(sb.charAt(left)!=sb.charAt(right))
         {
            return false;
         }
         left++;
         right--;
        }
        return true;
    }
}
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]