有效的字母异位词

有效的字母异位词
题目

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

示例 1:

输入: s = "anagram", t = "nagaram"
输出: true
示例 2:

输入: s = "rat", t = "car"
输出: false
说明:
你可以假设字符串只包含小写字母
分析

1、什么是字母异位词

如果两个字符串长度相等,各个字母的个数相等,只是顺序不同,那么这两个词是字母异位词

2、如果两个字母长度不同,直接返回false

if(s.length != t.length)
{
	retutn false;
}

3、两个字母是异位词,表示排序后两个字符相等

代码
int cmp(const void* _a, const void* _b) {
    char a = *(char*)_a, b = *(char*)_b;
    return a - b;
}

bool isAnagram(char* s, char* t) {
    int len_s = strlen(s), len_t = strlen(t);//利用strlen计算长度
    if (len_s != len_t) {
        return false;
    }
    qsort(s, len_s, sizeof(char), cmp);//s排序
    qsort(t, len_t, sizeof(char), cmp);//t排序
    return strcmp(s, t) == 0;
}

1、size_t strlen(const char *str)

计算字符串 str 的长度,直到空结束字符,但不包括空结束字符

2、qsort()对数组进行排序,函数原型如下(quicksort

void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))
  • base:指向要排序的数组的第一个元素指针
  • nitems:数组元素的个数
  • size:数组中每个元素大小,以字节为单位
  • compar:用来比较的函数

3、const void* _a

const是定义常量,不可修改。void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据

4、* (char*)_a

(char )_a表示指向 _a的指针,并且为char类型; * (char) _ a表示 _ a存放的内容

5、strncmp()把 str1str2 进行比较,最多比较前 n 个字节

int strncmp(const char *str1, const char *str2, size_t n)

参数

  • str1 – 要进行比较的第一个字符串。
  • str2 – 要进行比较的第二个字符串。
  • n – 要比较的最大字符数。

返回值

该函数返回值如下:

  • 如果返回值 < 0,则表示 str1 小于 str2。
  • 如果返回值 > 0,则表示 str2 小于 str1。
  • 如果返回值 = 0,则表示 str1 等于 str2。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员的修养

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值