题目概述:

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.
Note: You may assume the string contains only lowercase alphabets.

解题方法:
        该题意是比较两个字符串s和t,其中t是次序打乱的字符串,如果两个字符串相同则返回true,否则false。方法包括:(参考)
        方法一
        最简单的方法就是字符串s和t分别排序,在比较两个字符串是否相同。但是会报错TLE- Time Limit Exceeded
        同样采用选择排序每次比较最小字符,不同则跳出循环返回false也TLE。

bool isAnagram(char* s, char* t) {int ls,lt;    //字符串长度int i,j;char ch;if(s==NULL&&t==NULL)return true;ls=strlen(s);lt=strlen(t);if(ls!=lt)return false;//方法一 排序后判断字符串是否相等for(i=0; i<ls; i++) {for(j=i+1; j<ls; j++) {if(s[i]>=s[j]) {ch=s[i];s[i]=s[j];s[j]=ch;}if(t[i]>=t[j]) {ch=t[i];t[i]=t[j];t[j]=ch;}}}if(strcmp(s,t)==0)return true;elsereturn false;
}

方法二
        后来百度下发现如果采用Java代码,通过调用内部的sort排序则会AC,但个人不喜欢调用内部函数的方法。

public class Solution {  public boolean isAnagram(String s, String t) {  char[] sArr = s.toCharArray();  char[] tArr = t.toCharArray();  Arrays.sort(sArr);  Arrays.sort(tArr);  return String.valueOf(sArr).equals(String.valueOf(tArr));  }
}  

C++调用sort排序代码如下:

class Solution {
public:bool isAnagram(string s, string t) {sort(s.begin(), s.end());sort(t.begin(), t.end());return s == t;}
};

方法三
        计算字符串字母个数,比较值都相同则true,否则返回false。
        方法四 (强推)
        通过一个长度为26的整形数组,对应英文中的26个字母a-z。从前向后循环字符串s和t,s中出现某一字母则在该字母在数组中对应的位置上加1,t中出现则减1。如果在s和t中所有字符都循环完毕后,整型数组中的所有元素都为0,则可认为s可由易位构词生成t。

bool isAnagram(char* s, char* t) {int ls,lt;    //字符串长度int i;int num[26]={0};if(s==NULL&&t==NULL)return true;ls=strlen(s);lt=strlen(t);if(ls!=lt)return false;//方法四 计算字母个数 s中出现+1,t中出现-1,整个数组26个数都为0时则表示相同for(i=0; i<ls; i++) {num[s[i]-'a']++;num[t[i]-'a']--;}for(i=0; i<26; i++) {if(num[i]!=0)return false;}return true;
}

而且最后的时间结果也比较优秀: C++调用sort代码-76ms; Java调用sort代码-288ms;C语言计算字母个数-0ms。

(By:Eastmount 2015-9-14 清晨7点半     http://blog.csdn.net/eastmount/ )

[LeetCode] Valid Anagram - 字符串排序比较系列相关推荐

  1. LeetCode 791. 自定义字符串排序(map)

    1. 题目 字符串S和 T 只包含小写字符.在S中,所有字符只会出现一次. S 已经根据某种规则进行了排序.我们要根据S中的字符顺序对T进行排序.更具体地说,如果S中x在y之前出现,那么返回的字符串中 ...

  2. [LeetCode] Valid Anagram

    Given two strings s and t, write a function to determine if t is an anagram of s. For example, s = & ...

  3. LeetCode[791] 自定义字符串排序

    最近断断续续也刷了点题,但都没什么意思,印象里好像一直在递归,所以也没有特别记录. 今天这道题虽然很简单,但终于不是递归了,而且其中一位前辈的解答用到了一个我不了解的C++11特性--lambda. ...

  4. c++ 多个字符串排序_RPython Data Science系列:数据处理(5)--字符串函数基于R(一)

    ​0 前言 数据根据结构可以分为结构化数据.非结构化数据和半结构化数据,前面介绍的数据处理函数针对于结构化数据,而字符串通常包含非结构化或者半结构化数据,这一部分介绍一下R和Python中的字符串函数 ...

  5. 算法系列—低位优先的字符串排序(基于键索引计数法)

    原理日后有空补上.今天该回宿舍了- - 此版本可实现相同长度的字符串数组,不同长度稍加改动即可. C++代码如下: #include<iostream> #include <stri ...

  6. C#LeetCode刷题-字符串

    字符串篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串 24.6% 中等 5 最长回文子串 22.4% 中等 6 Z字形变换 35.8% 中等 8 字符串转整数 (atoi) 15.3% 中 ...

  7. LeetCode实战:字符串相乘

    题目英文 Given two non-negative integers num1 and num2 represented as strings, return the product of num ...

  8. LeetCode实战:字符串相加

    题目英文 Given two non-negative integers num1 and num2 represented as string, return the sum of num1 and ...

  9. LeetCode实战:删除排序数组中的重复项

    题目英文 Given a sorted array nums, remove the duplicates in-place such that each element appear only on ...

最新文章

  1. 栈与队列1——设计getMin功能的栈
  2. (转)android UI进阶之用ViewPager实现欢迎引导页面
  3. retinajs 使用方法
  4. 自己喜欢的shell终端配置
  5. C#类中的internal成员可能是一种坏味道
  6. 你在做大数据?你有目标么?
  7. Node.js框架对比:Express/Koa/Hapi
  8. RX异常点检测算法(马氏距离)
  9. 3-8《Ruby元编程》第二章对象模型
  10. vscode多开远程链接矩池云服务器
  11. 腾讯云刘颖:与微信共建小程序开发者生态,让小程序开发更简单
  12. Bailian4098 第二大价值【排序+最值】
  13. 关键字值集合和IDictionary
  14. QTalk 基于Qt的局域网聊天软件(beta 0.1.0)
  15. 【C语言】素数/质数
  16. 手机图形计算器matlab,Mathlab图形计算器
  17. IPFS时代来临,FIL WORLD重赋存储灵魂
  18. warmup与余弦退火学习率
  19. Hive的行列转换(行转多列、多列转行、行转单列、单列转行)
  20. SpringBoot中通过Redis的setnx和自定义注解@Idempotent实现API幂等处理

热门文章

  1. oracle复合索引介绍(多字段索引)
  2. linux日志分析与痕迹清理
  3. FPGA实战操作(1) -- SDRAM(Verilog实现)
  4. bootstrap禁用点击空白处关闭模态框
  5. mysql的partition分区
  6. cmd的rd命令简单解析
  7. .net aes加密视频等文件
  8. asp.net MVC 中使用dataannotation验证Model
  9. 计算机位数与内存相关,弄懂电脑的各种位数、内存、存储
  10. Game of Hyper Knights LightOJ - 1315