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

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

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

方法一:排序法。最容易想到的方法就是對兩個字串中的字元進行排序,比較兩個排序後的字串是否相等。若相等,則表明他們是由相同的字元組成的,否則,表明它們不是由相同的字元組成 的。實現程式碼如下:

package test;

import java.util.Arrays;

public class Test{
	public static void compare(String s1,String s2){
		byte[] b1=s1.getBytes();
		byte[] b2=s2.getBytes();
		Arrays.sort(b1);
		Arrays.sort(b2);
		s1=new String(b1);
		s2=new String(b2);
		if(s1.equals(s2))
			System.out.println("equals");
		else
			System.out.println("not equals");
	}
	public static void main(String[] a){
		String s1="aaaabbc";
		String s2="abcbaaa";
		compare(s1,s2);
		s1="aaaabbc";
		s2="abcbaab";
		compare(s1,s2);
	}
}
以上方法的時間複雜度取決於排序演算法的時間複雜度,由於最快的排序演算法的時間複雜度為O(nlogn),因此,該方法的時間複雜度也為O(nlogn)

方法二:空間換時間。在演算法設計中,經常會採用空間換時間的方法以降低時間的複雜度,即通過增加額外的儲存空間來達到優化演算法的效果。就本題而言,假設字串中只是用ASCII字元,由於ASCII字元共有256個(對應的編碼為0——255),在實現時可以通過申請大小為256的陣列來記錄各個字元出現的次數,並初始化為0,然後遍歷第一個字串,將字串中字元對應的ASCII碼值作為陣列下標,把對應陣列的元素加1,然後遍歷第二個字串,把陣列中對應的元素值減1.如果最後陣列中各個元素的值都為0,說明這兩個字串是相同的字元組成的;否則,說明這兩個字串是由不同的字元組成 的。示例程式碼如下:

package test;

import java.util.Arrays;

public class Test{
	public static void compare(String s1,String s2){
		byte[] b1=s1.getBytes();
		byte[] b2=s2.getBytes();
		int[] bCount=new int[256];
		for(int i=0;i<256;i++){
			bCount[i]=0;
		}
		for(int i=0;i
與方法一相比,方法二多申請了額外的儲存空間,但是提高了演算法的效率,該演算法的時間複雜度為O(n).

相關推薦

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

問題描述:由相同的字元組成是指組成兩個字串的字母以及各個字母的個數是一樣的,只是排列順序不同而已,例如“aaaabbc"與”abcbaaa"就由相同的字元組成的。下面描述判斷給定的兩個字串是否由相同的字元組成的方法。 方法一:排序法。最容易想到的方法就是對兩個字串中的字元進

判斷一個字串是否數字組成

想要判斷一個字串是否由數字組成: 首先我們不知道字串的長度以及所包含的內容 所以我們先把字串轉化為字元陣列 然後判斷每一個字元是否是0—9之間的內容 如果是,則為數字 public class test{ public static void

java中怎麼判斷一個字串中包含某個字元字串

var Cts = "bblText"; if(Cts.indexOf("Text") > 0 ) { alert('Cts中包含Text字串'); } indexOf用法:  返回 String 物件內第一次出現子字串的字元位置。         strObj.ind

java 判斷一個字串是否包含某個字元

一、contains方法 1:描述 java.lang.String.contains() 方法返回true,當且僅當此字串包含指定的char值序列 2:宣告 public boolean contains(CharSequence s)3:返回值 此方法返回true,如果

SQLSERVER 判斷一個字串是否包含特殊字元

DECLARE @Text VARCHAR(50)SET @Text = 'as df' DECLARE @ExistSpaceChar INTDECLARE @StrCount INT SET  @ExistSpaceChar = 0SELECT  @StrCount =

判斷一個字串陣列中相同和不同的元素

判斷一串資料中的相同與不同的元素,並分別記錄個數。使用Set存放不同的資料。 Set<String> stringSet = new HashSet<String>();//用Set存放不同的字串 Map<String, Inte

c++如何判斷一個字串是否只有可見字元

 #include<algorithm>  #include<boost/bind.hpp> #include<cctype> #include <string> #include <iostream> using

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

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

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

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

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

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

判斷一個字串String是否是數字組成,採用正則表示式

public class TrimTest { public static void main(String[] args){ String s = "1955"; String reg

mysql 函式 判斷一個字串裡面包含幾個其他的字元

1.mysql函式: 判斷一個字串裡面包含幾個‘;’ drop function if exists func_containumsplit; create function func_containumsplit(targetstr varchar(500)) returns INT beg

(ES6的“...“配合ES5‘’forEach‘’)前端面試之判斷一個字串中出現次數最多的字元,統計這個次數

// 判斷一個字串中出現次數最多的字元,統計這個次數 let str = 'aasdadddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddsdasjjhsghkafsagjkg

1.實現一個函式,可以左旋字串中的k個字元。 2.判斷一個字串是否為另外一個字串旋轉之後的字串

1.實現一個函式,可以左旋字串中的k個字元 ABCD左旋一個字元得到BCDA ABCD左旋兩個字元得到CDAB #include<stdio.h> #include<string.h> void left_move(char*str, int

js 判斷一個字串中出現次數最多的字元,統計其出現次數

js 判斷一個字串中出現次數最多的字元,統計其出現次數 var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i

判斷一個字串中出現次數最多的字元,統計這個次數

var str = 'asdfssaaasasasasaa'; var json = {}; for (var i = 0; i < str.length; i++) { if(!json[str.charAt(i)]){ json[str.cha

MySQL開發-判斷一個字串裡面包含幾個其他的字元,逐個獲取以分隔符間隔的字串

一、獲取一個字串中包含幾個指定的匹配字串 在儲存過程中要對一個字元中進行分割,獲取裡面以','分隔的各個字串,如: '0102_001956B_1,0102_001955A_1,0102_001954C_1,0102_001953D_1,0102_001952E_1'

【演算法】判斷一個字串的所有字元是否全部不同 java程式碼實現

package com.billkang.algorithm; import java.util.HashSet; import java.util.Set; /** * * @author K

leetcode_459. Repeated Substring Pattern 重複子串模式,判斷某個字串能否某個字串重複若干次組成

題目: Given a non-empty string check if it can be constructed by taking a substring of it and appending multiple copies of the substring

判斷一個字串裡面是否有重複的字元

**題目要求:請實現一個演算法,確定一個字串的所有字元是否全都不同。這裡我們要求不允許使用額外的儲存結構。 給定一個string iniString,請返回一個bool值,True代表所有字元全都不同,False代表存在相同的字元。保證字串中的字元為ASCII