Valid Anagram
2015-08-11 10:25
253 查看
题目如下: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.
思路如下:先判断两个String的长度,若长度不一致返回false;长度一致,对String进行判断,采用hashMap的形式,把string转换为char[],存入Map,key值为char,value为每个元素在数组中出现的次数,然后把另一个数组中的元素和Map中的元素进行比较,若存在Map中,且出现的次数为1,则删除Map中的此元素,若在Map中出现的次数大于1,则把其Value值减1,若char不存在Map中则返回false.
For example,
s = “anagram”, t = “nagaram”, return true.
s = “rat”, t = “car”, return false.
思路如下:先判断两个String的长度,若长度不一致返回false;长度一致,对String进行判断,采用hashMap的形式,把string转换为char[],存入Map,key值为char,value为每个元素在数组中出现的次数,然后把另一个数组中的元素和Map中的元素进行比较,若存在Map中,且出现的次数为1,则删除Map中的此元素,若在Map中出现的次数大于1,则把其Value值减1,若char不存在Map中则返回false.
public class Solution { public boolean isAnagram(String s, String t) { int tlength = t.length(); int slength = s.length(); if(tlength == slength){ HashMap<Character,Integer> map = new HashMap<Character, Integer>(); char[] schar = s.toCharArray(); char[] tchar = t.toCharArray(); for(int i = 0 ;i < slength; i++){ if(map.containsKey(schar[i])){ int j = map.get(schar[i])+1; map.put(schar[i], j); }else{ map.put(schar[i], 1); } } for(int i = 0 ; i < tlength; i++ ){ if(map.containsKey(tchar[i])){ if(map.get(tchar[i])==1){ map.remove(tchar[i]); }else{ int j = map.get(tchar[i]); map.put(tchar[i], j-1); } }else{ return false; } } return true; } return false; } }
相关文章推荐
- 动易2006序列号破解算法公布
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法
- 基于C++实现的各种内部排序算法汇总
- C++线性时间的排序算法分析
- C++实现汉诺塔算法经典实例
- PHP实现克鲁斯卡尔算法实例解析
- C#获取关键字附近文字算法实例