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

 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 public class Main {
10
11     public boolean compare1(String str1, String str2) {
12
13         char[] chars1 = str1.toCharArray();
14         char[] chars2 = str2.toCharArray();
15
16         Arrays.sort(chars1);
17         Arrays.sort(chars2);
18
19         return String.valueOf(chars1).equals(String.valueOf(chars2));
20     }
21
22     public boolean compare2(String str1, String str2) {
23
24         int[] result = new int[256];
25         char[] chars1 = str1.toCharArray();
26         char[] chars2 = str2.toCharArray();
27
28         for (int i = 0; i < chars1.length; i++) {
29             result[chars1[i]]++;
30         }
31
32         for (int i = 0; i < chars2.length; i++) {
33             result[chars2[i]]--;
34         }
35
36         for (int i = 0; i < result.length; i++) {
37             if (result[i] != 0) {
38                 return false;
39             }
40         }
41         return true;
42     }
43
44     public static void main(String[] args) {
45         Main main = new Main();
46         Scanner scanner = new Scanner(System.in);
47
48         while (scanner.hasNextLine()) {
49             String str1 = scanner.nextLine();
50             String str2 = scanner.nextLine();
51
52             if (str1 == null || str2 == null) {
53                 continue;
54             }
55
56             System.out.println(main.compare1(str1, str2));
57             System.out.println(main.compare2(str1, str2));
58         }
59     }
60 }

原文地址:https://www.cnblogs.com/jiangyi-uestc/p/9281318.html

时间: 2024-10-11 08:10:52

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

判断两个字符串是否是变位词 (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

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

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

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

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

leetcode 161. One Edit Distance 判断两个字符串是否是一步变换 --------- java

Given two strings S and T, determine if they are both one edit distance apart. 给定两个字符串,判断他们是否是一步变换得到的. 在这里需要注意几点: 1.不等于1的变换都要返回false(包括变换次数等于0). 2.还有很多细节需要注意. 方法如下: 1.直接判断:1)如果差值大于1,直接返回false.  2)如果长度相同,那么依次判断,是否只有一个字母不一样.  3)如果不一样,那么看是否是只是多出了一个字母. p

[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

判断两个字符串是否互为旋转词

题目 对于一个字符串str,把前面任意部分挪到后面形成的字符串叫作str的旋转词.比如str="12345",其旋转词有"23451"."34512"."45123"."51234".给定两个字符串a和b,判断a和b是否互为旋转词. 实现 这是一种非常讨巧的实现方式,将原始字符串累加一次,并以用String自带的contains方法判断是否包含所判断的是否匹配的字符串 import org.junit.As