leetcode题库之242

242/Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.
中文翻译:
给出两个字符串s和t,写一个方法来判断t是否是s的回文数。

在做该题的时候,我是按照自己的思路来求解的,在按照自己的思路实现之后我又上网看别人的解题思路,发现自己做的有点复杂了。不过没事,又学到了一种解题思路!哈哈,挺喜欢这种感觉的! 好了,回归主题,先讲讲我的解法吧!

1.首先是先判断s和t的长度是否相等,如果不相等直接返回false
2.两个for循环顺序扫描s中的元素是否能在t中找到,如果s中的某个元素在t中存在,将t减去该元素得到新的t,继续执行下一个元素判断。
3.如果发现s中只要有一个元素在t中找不到就直接返回false并跳出循环。
4.如果循环完毕,s中的元素总能在t中找到,那就返回true。

完整实现的代码如下:

#include <iostream>
#include <string>
#include <vector>

using namespace std;

class Solution {
public:
    bool isAnagram(string s, string t) {
        if(!(s.length()-t.length()==0))  //判断输入的两个字符串长度是否相等
        {
            return false;
        }
        else
        {
            string::iterator s_it ;
            string::iterator t_it ;
            for(s_it = s.begin();s_it != s.end();s_it++)
            {
                for(t_it = t.begin();t_it != t.end();t_it++)
                {
                    if(*t_it == *s_it)  //如果t中有与其相同的元素,删除t中对应的元素,跳出本次循环
                    {
                        t.erase(t_it);
                        break;
                    }
                    if(t_it == t.end()-1)//如果在t中找不到与其相同的元素,返回false,跳出循环
                    {
                        return  false;
                        break;
                    }
                }
            }
            if(t.length()==0)
                {
                    return true;
                }
        }
    }
};
/*
写了个main函数用来测试了下
void main()
{
    Solution a;
    string t,s;
    cin>>t>>s;
    if(a.isAnagram(t,s))
        cout<<"true"<<endl;
    else
        cout<<"false"<<endl;
}
*/

哈哈,是不是好low啊!

再说说网上的解题思路:
先对两个字符串分别进行排序再进行对比!(开始还真没想到哈,就是喜欢这种感觉)

我的实现代码如下:

class Solution {
public:
    bool isAnagram(string s, string t) {
        if(!(s.length()-t.length()==0))  //判断输入的两个字符串长度是否相等
        {
            return false;
        }
        else
        {
            sort(s.begin(),s.end());//将s进行排序
            sort(t.begin(),t.end());//将t进行排序
            if(s==t)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
    }
};
Leetcode题库是一个包含了各种算法和数据结构问题的在线题库,供程序员练习和提升技能使用。这个题库中涵盖了大量的题目,包括但不限于图遍历、最短路径、有效的括号、字符串解码、Z字形变换、最长公共前缀、字符串相乘、颠倒字符串中的单词、比较版本号、反转字符串、压缩字符串、验证IP地址等等。它提供了java实现的leetcode解法,这些解法的代码规范,可读性良好,并且其中的解法思想并不受语言限制。通过解决这些题目,程序员可以提高自己的算法和编码能力。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [leetcode题库-leetcode-java:LeetcodeJava代码](https://download.csdn.net/download/weixin_38661100/19901136)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [LeetCode算法题整理(200题左右)](https://blog.csdn.net/qq_38253797/article/details/126827454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值