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。
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 13:47
点赞 评论 收藏
分享
Southyeung:我说一下我的看法(有冒犯实属抱歉):(1)简历不太美观,给我一种看都不想看的感觉,感觉字体还是排版问题;(2)numpy就一个基础包,机器学习算法是什么鬼?我感觉你把svm那些写上去都要好一点。(2)课程不要写,没人看,换成获奖经历;(3)项目太少了,至少2-3个,是在不行把网上学习的也写上去。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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