LeetCode242_Valid Anagram(判断两个字符串是不是由完全一样字符组成) Java题解

题目:

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.

题解:

用一个哈希表记录其中一个字符串的每一个字符及出现的次数。用另一个字符串的字符当作key获取value判断是否存在。

public static boolean isAnagram(String s, String t) {

	   if(s.length()!=t.length())
		   return false;

	   char[] array=s.toCharArray();
	   HashMap<Character, Integer> hashMap=new HashMap<>();
	   for(int i=0;i<array.length;i++)
	   {
		   if(hashMap.get(array[i])==null)
		   {
			   hashMap.put(array[i], 1);
		   }
		   else {
			int temp=hashMap.get(array[i]);
			hashMap.put(array[i], temp+1);
		}
	   }

	   for(int k=0;k<s.length();k++)
	   {
		   char stemp=t.charAt(k);
		   if(hashMap.get(stemp)!=null)
		   {
			   int value=hashMap.get(stemp);
			   if(value>=1)
			   {
			   hashMap.put(stemp, value-1);
			   }
			   else {
				return false;
			}
		   }
		   else {
			return false;
		}
	   }
	   return true;

    }

}

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-12 23:31:16

LeetCode242_Valid Anagram(判断两个字符串是不是由完全一样字符组成) Java题解的相关文章

[算法]判断两个字符串是否由相同的字符组成

如何判断两个字符串是否由相同的字符组成 题目描述: 由相同的字符组成是指组成两个字符串的字母以及各个字母的个数是一样的,只是排列顺序不同而已.例如"aaaabbc"与"abcbaaa"就由相同的字符组成的. 方法一: 排序法,将两个字符串中的字符排序,比较两个排序后的字符串是否相等.若相等则表明它们是由相同的字符组成的,否则,表明他们是由不同的字符组成的. import java.util.Arrays; public class Solution { public

【字符串】判断两个字符串是否由相同的字符组成

1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 /** 5 * 功能:判断两个字符串是否由相同的字符组成,比如aaaabbc和abcbaaa就是. 6 * 思路1:将两个字符串按字符进行排序,判断排序后字符串是否相同: 7 * 思路2:申请一个256大小的int数组,遍历第一个字符串,遇到一个字符,就将字符对应的数组下标的元素+1,然后,遍历第二个字符串,同理-1,最后,判断数组的所有元素是否都是0. 8 */ 9 publi

[leetcode]242. Valid Anagram判断两个字符串是不是包含相同字符的重排列

/* 思路是判断26个字符在两个字符串中出现的次数是不是都一样,如果一样就返回true. 记住这个方法 */ if (s.length()!=t.length()) return false; int[] words = new int[26]; for (int i = 0; i < s.length(); i++) { words[s.charAt(i)-'a']++; words[t.charAt(i)-'a']--; } for (int i = 0; i < 26; i++) { i

判断两个字符串是否是变位词 (keep it up)

写一个函数判断两个字符串是否是变位词.变位词(anagrams)指的是组成两个单词的字符相同,但位置不同的单词.比如说, abbcd和abcdb就是一对变位词 这也是简单的题. 我们可以排序然后对比, 也可以直接统计字符出现的个数来判断.这里给出统计字符来判断的代码: bool isAnagram1(const string& vLeft, const string& vRight) { if (vLeft.size() != vRight.size()) return false; in

JavaSE8基础 String equalsIgnoreCase 判断两个字符串的内容是否相同 (不区分大小写)

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.t02; public class Demo { public static void main(String[] args) { // 判断两个字符串的内容相同吗 不区分大小写 String s1 = "jizuiku"; String s2 = "a

java中判断两个字符串是否相等的问题

我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是"==",但在java中不能这么写.在java中,用的是equals(); 例:A字符串和B和字符串比较: if(A.equals(B)){ } 返回true 或false. String 的equals 方法用于比较两个字符串是否相等.由于字符串是对象类型,所以不能用简单的"=="判断.而使用equals比较两个对象的内容是否

JavaSE8基础 String equals 判断两个字符串的内容是否相同(区分大小写)

os :windows7 x64    jdk:jdk-8u131-windows-x64    ide:Eclipse Oxygen Release (4.7.0)        code: package jizuiku.t02; public class Demo { public static void main(String[] args) { // 判断两个字符串的内容相同吗 String s1 = "jizuiku"; String s2 = "abcdef&q

字符串问题----判断两个字符串是否互为变形词

判断两个字符串是否互为变形词 给定两个字符串 str1 和str2 ,如果两个字符串中出现的字符种类一样,次数也一样,则互为变形词,实现一个函数判断两个字符串是否互为变形词.例如 str1="123",str2="132",true; str1="123",str2="1332",false; [解题思路] 1. 首先比较两个字符串的长度,长度不同肯定是false. 2. 如果长度相同,新建一个数组,用以存储每个字符出现次数.

leetcode-242 判断两个字符串是不是 Anagram ?

题目描述 假设给定两个字符串 s 和 t, 让我们写出一个方法来判断这两个字符串是否是字母异位词? 字母异位词就是,两个字符串中含有字母的个数和数量都一样,比如: Example 1: Input: s = "anagram", t = "nagaram" Output: true 字符串 s 和 t 含有的字母以及字母的数量都一致,所以是 True. Example 2: Input: s = "rat", t = "car"