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

牛群密码 - 有效回文

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

知识点

字符串,模拟

思路

此题有两个需要满足的条件

字符种类数小于等于K

可以遍历字符串的每一位,并插入set中,set自动去重,若set.size()>k,则说明不符合题意

删除某种字符后是回文字符串

首先先写一个判断字符串是否是回文的函数,可以用双指针实现。 然后,借助第一个条件的set,遍历set的每一位字符v,每次遍历一次字符串,获取除v以外的字符串,并判断这个字符串是否为回文串,是则return true 到最后都没有返回true那就返回false

代码c++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param password string字符串 
     * @param k int整型 
     * @return bool布尔型
     */
     int ishuiwen(string s)
     {
        for(int i=0,j=s.size()-1;i<j;i++,j--)
        {
            if(s[i]!=s[j])return 0;
        }
        return 1;
     }
    bool isValidPalindrome(string password, int k) {
        // write code here
       set<int>a;
        for(int i=0;i<password.size();i++)
        {
            a.insert(password[i]-'a');
        }
        if(a.size()>k)return false;
        for(auto v:a)
        {
            string t;
            for(int i=0;i<password.size();i++)
            {
                if(password[i]!=v+'a')t+=password[i];
            }
            if(ishuiwen(t))return true;
        }
        return false;

    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-21 19:05
面试官_我太想进步了:混学生会的,难怪简历这么水
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务