zoukankan      html  css  js  c++  java
  • Lintcode--002(两个字符串是变位词)

    写出一个函数 anagram(s, t) 判断两个字符串是否可以通过改变字母的顺序变成一样的字符串。

     
    样例

    给出 s = "abcd",t="dcab",返回 true.
    给出 s = "ab", t = "ab", 返回 true.
    给出 s = "ab", t = "ac", 返回 false.

     标签 

    解题:
    class Solution {
    public:
        /**
         * @param s: The first string
         * @param b: The second string
         * @return true or false
         */
        bool anagram(string s, string t) {
            // write your code here
            
            //Lintcode--002;
            //此题目应该与Lintcode--001属于同类型题目,核心思路一致,只是最后两个字符串做的比较不一样;
            //这个题目甚至更简单一些,但是细节上需要注意ASCII码表,一些常见字符对应的十进制值,这有利于以后使用;
            //解析可参考Lintcode--001;
            
            
            //边界条件,长度如果不相等,直接pass;
            if(s.size()!=t.size()){
                return false;
            }
            //主要任务应该是比较两个字符串,各个字母出现的次数是否相同;
            //创建数组,用来统计各种字符出现的次数;
            
            else {
                int letters1[128];
                memset(letters1,0,sizeof(letters1));
                for(int i=0;i<s.size();i++){
                    letters1[s[i]-' ']++;
                }
                int letters2[128];
                memset(letters2,0,sizeof(letters2));
                for(int j=0;j<t.size();j++){
                    letters2[t[j]-' ']++;
                }
                for (int k=0;k<128;){
                    if (letters1[k]==letters2[k]){
                        k=k+1;
                    }
                    else 
                    {
                        return false;
                    }
                }
                return true;
            }
        }
    };

    附:ASCII码表

  • 相关阅读:
    go语言基本语法
    go语言学习
    Dockerfile简单实战
    Dockerfile构建命令
    docker安装prometheus grafana监控
    docker kali安装及复现永恒之蓝漏洞
    Windows系统实用快捷键
    python pip修改国内源
    网络基础——子网掩码及网络划分
    OSI七层模型简单概念及相关面试题
  • 原文地址:https://www.cnblogs.com/Allen-rg/p/5788638.html
Copyright © 2011-2022 走看看