首页 > 其他分享 >LeetCode 242. 有效的字母异位词

LeetCode 242. 有效的字母异位词

时间:2023-05-07 17:45:50浏览次数:51  
标签:26 return string 异位 字母 242 字符串 LeetCode

题目链接:LeetCode 242. 有效的字母异位词

题意:

本题是要判断两个字符串 s 和 t,是否是字母异位词,所谓字母异位次就是 如果 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。

解题思路:

首先我们很容易想到,最简单的思路就是先遍历一遍s字符串,统计出每个字母出现的次数,然后同样的遍历t字符串,统计出每个字母出现的次数,

最后判断两个字符串中,每个字母出现的次数是否是相同的。

代码如下:

func isAnagram(s string, t string) bool {
 
    if len(s)!=len(t){
        return false
    }
    ss:=make([]int,26)
    tt:=make([]int,26)

    for i,_:=range s{
        ss[s[i]-'a']++
    }
    for i,_:=range t{
        tt[t[i]-'a']++
    }
   
    for i:=0;i<26;i++{
        if ss[i]!=tt[i]{
            return false
        }
    }
    return true

}

其实上面代码看着比较啰嗦,由于字母总共也就是26个小写字母,因此只用一个数组来记录每个字母出现的次数即可,

代码如下:

func isAnagram(s string, t string) bool {

    //遍历s,每出现一个字母,对应的值+1,
    //遍历t,每出现一个字母,对应的值-1,
    //原数组是否恢复到声明时的状态。
    // 最后判断 m 数组如果有的元素不为零0,说明字符串s和t一定是谁多了字符或者谁少了字符,return false。
    // 最后如果 m 数组所有元素都为零0,说明字符串s和t是字母异位词,return true。

    m:=[26]int{}   //用来上记录字符串s里字符出现的次数。
    for i,_ := range s{
         m[s[i]-'a'] ++
    } 
    for i,_ :=range t{
       m[t[i] - 'a']--
    }
    return m == [26]int{}

}

标签:26,return,string,异位,字母,242,字符串,LeetCode
From: https://www.cnblogs.com/lxing-go/p/17379658.html

相关文章

  • Leetcode11~20题整理
    11.盛最多水的容器比较暴力的做法:classSolution{public:intmaxArea(vector<int>&h){vector<int>t;intn=h.size();intres=-1;for(inti=0;i<n;i++){for(intj=0;j<(int)t.size(......
  • LeetCode 134.加油站
    1.题目:在一条环路上有n 个加油站,其中第i 个加油站有汽油 gas[i] 升。你有一辆油箱容量无限的的汽车,从第i个加油站开往第i+1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加油站出发,开始时油箱为空。给定两个整数数组gas和cost,如果你可以绕环路行驶一周,则返回......
  • 【二分查找】LeetCode 33. 搜索旋转排序数组思路
    题目链接33.搜索旋转排序数组思路思路都在注释里代码classSolution{publicintsearch(int[]nums,inttarget){intlen=nums.length;if(len==0){return-1;}intleft=0,right=len-1;//1.......
  • 【二分查找】LeetCode 528. 按权重随机选择
    题目链接528.按权重随机选择思路代码classSolution{privateint[]sum;publicSolution(int[]w){sum=newint[w.length+1];for(inti=1;i<sum.length;i++){sum[i]=sum[i-1]+w[i-1];}}p......
  • 【二分查找】LeetCode 69. x 的平方根
    题目链接69.x的平方根思路基本思路是在区间\([1,x/2]\)中使用二分查找(因为平方根必然小于\(x/2\)),只不过需要注意一些细节。因为使用的是闭区间查找,所以判断循环终止的条件为\(left\leqright\)。为了防止溢出,使用mid=(right-left)/2+left和mid==x/mi......
  • 【二分查找】LeetCode 540. 有序数组中的单一元素
    题目链接540.有序数组中的单一元素思路假如不存在单个的元素,那么在奇数位置上总是成对元素的第一个元素,偶数位置上总是成对元素的第二个元素,但是如果加入了单个元素呢?我们可以看到在单个元素的左边这个特点没有变化,但是在单个元素的右边,奇数位置上总是成对元素的第二个元素,偶......
  • AtCoder Beginner Contest 242
    A-T-shirt#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){doublea,b,c,x; cin>>a>>b>>c>>x; if(x<=a)cout<<"1.000000000000"; elseif(x>b)cout<<&qu......
  • LeetCode 24. 两两交换链表中的节点
    题目链接:LeetCode24.两两交换链表中的节点本题不涉及算法,直接模拟就可以了,但是模拟的过程中,最好进行画图演示,不然容易出错。想要达到两两交换链表中节点的效果,就需要按照以下三个步骤进行。同时为了将头结点和非头结点统一处理,因此新建一个虚拟头结点,初始时,cur指向虚拟头结......
  • LeetCode 周赛 343(2023/04/30)结合「下一个排列」的贪心构造问题
    本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]提问。大家好,我是小彭。今天是五一假期的第二天,打周赛的人数比前一天的双周赛多了,难道大家都只玩一天吗?这场周赛是LeetCode第343场单周赛,如果不考虑第一题摆烂的翻译,整体题目质量还是很不错哒。往期回顾:L......
  • LeetCode刷题记录|LeetCode热题100|226.翻转二叉树(easy)
    题目描述:给你一棵二叉树的根节点root,翻转这棵二叉树,并返回其根节点。 思路与算法:从根节点开始,递归地对树进行遍历,并从叶子节点先开始翻转。如果当前遍历到的节点root的左右两棵子树都已经翻转,只需交换两棵子树的位置,即可完成以root为根节点的整棵子树的翻转。时间复......