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题库之242)