C++判断字符串是否为变形词

  • 思路
    • 遍历字符串a
    • 计算a中每个字符出现的次数
    • 计算b中相同字符的出现次数
    • 比较
    • 注意:
      • 任一字符串为空返回false。
      • 两个字符串长度不等,可直接返回false。
    • 复杂度率高n*n,降低复杂度的方法:
      • 使用哈希表,记录字符和出现次数。
      • 使用数组或者容器,acsII个数为256,申请256的空间即可,记录字符出现的次数。
/*

题目:
给定两个字符串str1和str2,如果str1和str2中出现的字符种类一样
且每种字符出现的次数也一样,那么str1与str2互为变形词。请实现
函数判断两个字符串是否互为变形词。
例:
str1 = "123" ,str2 = "231" ,返回true
str1 = "123" ,str2 = "2331" ,返回false

*/
//第一种思路:
bool f(char *str1,char *str2)//判断str1和str2是否为变形
{

    if (strlen(str1)!=strlen(str2))
    {
        return 0;
    }
    if (*str1=='\0'||*str2=='\0')
    {
        return 0;
    }
    while(*str1 != '\0')
    {
        if (c_time(str1,*str1)!=c_time(str2,*str1))
        {
            return 0;
        }
        str1++;
    }


    return 1;
}
int c_time(char *str,char c)//字符c在str中的出现的次数
{
    int sum = 0;
    if (!str)
    {
        return sum;
    }
    while(*str != '\0')
    {
        if (*str == c)
        {
            sum++;
        }
        str++;
    }

    return sum;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章