1. 程式人生 > >如何判斷兩個字串是否由相同的字元組成

如何判斷兩個字串是否由相同的字元組成

package java程式設計師面試筆試寶典;

import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class 題8_6_2字串是否由相同字元組成 {
	
	public static void main(String[] args) {
		String str1="bbaadca";
		String str2="abcbaad";
		System.out.println(isComSame_2(str1, str2));
		
	}
	//hashmap法
	public static boolean isComSame_2(String str1,String str2){
		if(str1==null||str2==null||str1.length()!=str2.length()){
			return false;
		}
		char[] chs1=str1.toCharArray();
		char[] chs2=str2.toCharArray();
		Map<Character, Integer> map=new HashMap<Character, Integer>();
		for (int i = 0; i < chs1.length; i++) {
			if(map.containsKey(chs1[i])){
				map.put(chs1[i], map.get(chs1[i])+1);
			}else{
				map.put(chs1[i], 1);
			}
			
			if(map.containsKey(chs2[i])){
				map.put(chs2[i], map.get(chs2[i])-1);
				
			}else{
				map.put(chs2[i], -1);
			}
		}
	    for (Character c : map.keySet()) {
			if(map.get(c)!=0){
				return false;
			}
		}
		return true;
	}
	
	
	//排序法1
	public static boolean isComSame_1(String str1,String str2){
		if(str1==null||str2==null){
			return false;
		}
		byte[] s1=str1.getBytes();
		byte[] s2=str2.getBytes();
		Arrays.sort(s1);
		Arrays.sort(s2);
		String st1=new String(s1);
		String st2=new String(s2);
		
		return st1.equals(st2);
	}
	public static boolean isComSame_0(String str1,String str2){
		if(str1==null||str2==null||str1.length()!=str2.length()){
			return false;
		}
		int[] bitCount=new int[256];
		for (int i = 0; i < str1.length(); i++) {
			bitCount[str1.charAt(i)-'0']++;
		}
		for (int i = 0; i < str2.length(); i++) {
			bitCount[str2.charAt(i)-'0']--;
		}
		for (int i = 0; i < bitCount.length; i++) {
			if(bitCount[i]!=0){
				return false;
			}
		}
		return true;
	}
	
	//排序法
	public static boolean isComSame(String str1,String str2){
		if(str1==null||str2==null||str1.length()!=str2.length()){
			return false;
		}
		char[] chs1=str1.toCharArray();
		char[] chs2=str2.toCharArray();
		Arrays.sort(chs1);
		Arrays.sort(chs2);
		for (int i = 0; i < chs1.length; i++) {
			if(chs1[i]!=chs2[i]){
				return false;
			}
		}
		return true;
	}
}

相關推薦

如何判斷字串是否相同字元組成

package java程式設計師面試筆試寶典; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.

字串--------如何判斷字串是否相同字元組成

問題描述:          由相同的字元組成是指兩個字串,字母以及各個字母的個數是相同的,只是順序不同。如:“aaaabbc”與“abcbaaa”是由相同字元組成。 演算法思路: 方法一:排序法,也是最容易想到的方法,將兩個字串轉換為位元組陣列,分別排序後,判斷是否相

[演算法]判斷字串是否相同字元組成

如何判斷兩個字串是否由相同的字元組成 題目描述: 由相同的字元組成是指組成兩個字串的字母以及各個字母的個數是一樣的,只是排列順序不同而已。例如”aaaabbc”與”abcbaaa”就由相同

判斷字串是否包含相同字元(但是允許順序不一樣)

ABCC 在這裡equals CBAC 先比較字串長度就不說了 最笨拙的方法,遍歷A字串,然後再去遍歷B字串, 開一個新陣列標記B上某位是否已匹配過。——O(n^2) 好一點的思路走向 字串其實就是char陣列,每一位的字元其實都是數字 所以“ABCC”

判斷子串和判斷字串是否另一個旋轉而來的問題

題目:假定又一個IsSubString,可檢查一個單詞是否為其他字串的子串。給定兩個字串s1和s2,請編寫程式碼檢查s2是否為s1旋轉而成,要求只能呼叫一次IsSubString。(比如,waterb

sql 判斷字串是否存在相同的內容

-- ============================================= -- Author:  wuchaorang -- Create date: 2010-12-22 -- Description: 判斷兩個字串是否存在相同的內容(查詢@ne

go判斷字串是否是是相互打亂的,也就是說它們有著相同字元,但 是對應不同的順序。

package main import ( "fmt" "strings" "unicode/utf8" ) func main() { fmt.Println(string([]rune("starting chat...")[2])) fmt.Printl

判斷字串是否相同

data segment mess1 db 'computer software $' mess2 db 'computer software $' data ends code segment ass

**題目描述:長度不超過80的字串,串中包括大寫、小寫和空格字元,去掉空格字元並忽略大小寫後判斷字串是否相等。

題目描述:兩個長度不超過80的字串,串中包括大寫、小寫和空格字元,去掉空格字元並忽略大小寫後判斷兩個字串是否相等。 輸入描述:第一行輸入的是測試資料的組數n,每組測試資料佔兩行,第一行是第一個字串S1,第二行是第二個字串S2。 輸出描述:如果兩個字串相等,則輸出YES,否則輸出NO。

查詢字串中的相同字元位置

class Solution { public:     vector<int> findAnagrams(string s, string p) {      vector<int>ve1(256,0);            vector<int>ve2(256,0);

怎麼判斷陣列是否為空?怎麼判斷字串不等?怎麼判斷字串相等?

陣列 首先來看這個案例: String sz[]=new String[8]; if(sz!=null){ System.out.println("hahah1"); } String szz[]=null; if(szz!=null){ System.out.prin

js怎麼判斷字串是否相等?

第一種、 <%     String bg=request.getParameter("bg");         if(bg==null||"".equals(bg)){   

判斷字串不同的json是否等價(附:將等價但是不同json調整成同一字串的方法)

在做軟體和網路測試的時候,經常需要對排版格式與內部結構順序不固定的json物件進行分析對比,而json基本語法下,同樣的一個json物件,字串變化可以千變萬化,json內各個層欄位順序調轉,排版變化,打亂順序的json陣列+多層巢狀,等等各種因素,都會造成對比上的困難。 以下由淺及深談談幾種

判斷檔案內容是否相同

package cn.bl.file; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.math.B

1.1 MySQL判斷字串是否有交集

1.1.1 設定log_bin_trust_function_creators log_bin_trust_function_creators控制是否可以信任儲存函式建立者,不會建立寫入二進位制日誌引起不安全事件的儲存函式。如果設定為0(預設值),使用者不得建立或修改儲存函式,除非它

判斷字串是否是旋轉數

package string; public class Xuanzhan { //本題的解法非常 簡單, 如果 a 和 b 的 長度不一 樣, 字串 a 和 b 不可能互為旋轉詞

判斷字串是否相等

將兩個字串比較是否相等 要求:給定兩個字串s1,s2並賦值,判斷兩個字串是否相等,若相等則返回0,否則返回1。 包含的引用函式 strlen(s1)取字串的長度 方案一:使用陣列表示,取兩個陣列的長度,k為較長陣列的長度,兩個陣列依次比較字串裡面的內容,如果相等則j+1,比較

JAVA如何判斷字串是否相等

1、java中字串的比較是==比較引用,equals 比較值 so我們經常習慣性的寫上if(str1==str2),這種寫法在java中可能會帶來問題  example1: String a="abc";String b="abc", 那麼a==b將返回true。因為在java

隨筆-找出字串中不相同的元素

題目: 給定兩個字串 s 和 t,它們只包含小寫字母。 字串 t 由字串 s 隨機重排,然後在隨機位置新增一個字母。 請找出在 t 中被新增的字母。 示例: 輸入: s = “abcd” t = “abcde” 輸出: e 解釋: ‘e’ 是那個被新增的字母。

5.1判斷字串是否互為變形詞

題目 給定兩個字串str1和str2,如果str1和str2中出現的字串種類一樣且每種字元出現的次數也一樣,那麼str1與str2互為變形詞。請實現函式判斷兩個字串是否互為變形詞。 程式碼實現 public boolean isDeformation (Str