Java题解 | #牛群密码 - 有效回文#

牛群密码 - 有效回文

https://www.nowcoder.com/practice/98fad63b47544d5ebf4042fc53b54b3d

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param password string字符串
     * @param k int整型
     * @return bool布尔型
     */
    public boolean isValidPalindrome (String password, int k) {
        // write code here
        HashSet<Character> set = new HashSet<>();
        for (char c : password.toCharArray()) {
            set.add(c);
        }

        if (set.size() > k) {
            return false;
        }

        int i = 0, j = password.length() - 1, t = 1;
        while (i < j) {
            if (password.charAt(i) == password.charAt(j)) {
                i++;
                j--;
                continue;
            }

            if (t == 1) {
                t = 0;
                if (password.charAt(i) == password.charAt(j - 1)) {
                    j--;
                } else if (password.charAt(i + 1) == password.charAt(j)) {
                    i++;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        }

        return true;
    }
}

Java代码

该题考察的主要知识点包括:

  1. 字符串处理:使用字符串的方法来处理密码中的字符。
  2. 数据结构:使用集合(HashSet)来存储不同的字符,以及在处理过程中判断字符是否出现过。
  3. 循环和条件判断:使用循环和条件判断来检查密码是否满足题目的条件。

代码解释:

  1. 使用 HashSet 存储密码中的不同字符,以便检查字符种类的数量是否超过 k。
  2. 首先判断集合中的字符种类数是否超过了 k,如果是,直接返回 false。
  3. 使用双指针 i 和 j 来比较密码的字符,t 作为标志位,记录是否已经删除了一个字符。
  4. 在循环中,如果 password.charAt(i) == password.charAt(j),表示当前字符是回文的一部分,移动指针并继续比较。
  5. 如果当前字符不相等,首先判断是否已经删除过字符,如果是,则无法满足条件,返回 false。
  6. 如果没有删除过字符,判断能否通过删除一个字符构成回文。具体判断条件是检查删除 password.charAt(j) 后是否能够构成回文,或者删除 password.charAt(i) 后是否能够构成回文。如果都不满足,则返回 false。
  7. 如果循环结束后没有返回 false,则表示密码满足条件,返回 true。
全部评论

相关推荐

哈哈哈哈哈哈哈哈哈哈这个世界太美好了
凉风落木楚山秋:毕业出路老师不管,你盖个章他好交差就完事了,等你盖完毕业了就不关他事情了
点赞 评论 收藏
分享
06-13 10:15
门头沟学院 Java
想去夏威夷的大西瓜在...:我也是27届,但是我现在研一下了啥项目都没有呀咋办,哎,简历不知道咋写
点赞 评论 收藏
分享
每晚夜里独自颤抖:要求太多的没必要理
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-02 15:39
希望奇迹发生的布莱克...:真的是 现在卷实习就是没苦硬吃
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务