题解 | #牛群密码 - 有效回文#
牛群密码 - 有效回文
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;
}
};