【每日刷题】Day88

【每日刷题】Day88

🥕个人主页:开敲🍉

🔥所属专栏:每日刷题🍍

🌼文章目录🌼

1. 面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

2. 面试题 01.02. 判定是否互为字符重排 - 力扣(LeetCode)

3. 面试题 01.04. 回文排列 - 力扣(LeetCode)

1. 面试题 01.01. 判定字符是否唯一 - 力扣(LeetCode)

//思路:遍历+记数。

class Solution {

public:

    bool isUnique(string astr)

    {

        int hash[27] = {0};

        string::iterator it = astr.begin();

//记录每个字符出现的次数

        while(it!=astr.end())

        {

            hash[*it-'a']+=1;

            it++;

        }

//判断是否都唯一出现

        for(int i = 0;i<27;i++)

        {

            if(hash[i]>1)

                return false;

        }

        return true;

    }

};

2. 面试题 01.02. 判定是否互为字符重排 - 力扣(LeetCode)

//思路:遍历+记数。记录两个字符串的每个字符出现次数是否相同。

class Solution {

public:

    bool CheckPermutation(string s1, string s2)

    {

        int hash1[27] = {0};

        int hash2[27] = {0};

        string::iterator it1 = s1.begin();

        string::iterator it2 = s2.begin();

//记录次数

        while(it1!=s1.end())

        {

            hash1[*it1-'a']+=1;

            it1++;

        }

        while(it2!=s2.end())

        {

            hash2[*it2-'a']+=1;

            it2++;

        }

//判断是否相同

        for(int i = 0;i<27;i++)

        {

            if(hash1[i]!=hash2[i])

                return false;

        }

        return true;

    }

};

3. 面试题 01.04. 回文排列 - 力扣(LeetCode)

//思路:遍历+记数。构成回文串的条件是字符串中唯一的字符数不能超过1。

class Solution {

public:

    bool canPermutePalindrome(string s)

    {

        int hash[128] = {0};

        int flag = 0;

        string::iterator it = s.begin();

//记录字符串字符出现个数

        while(it!=s.end())

        {

            hash[*it]+=1;

            it++;

        }

        for(int i = 0;i<128;i++)

        {

//计算唯一字符的个数

            if(hash[i]%2)

                flag++;

//唯一字符个数>1则不可能构成回文串

            if(flag>1)

                return false;

        }

        return true;

    }

};

  • 20
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值