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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章