1. 程式人生 > >字符串問題----判斷兩個字符串是否互為變形詞

字符串問題----判斷兩個字符串是否互為變形詞

public ati i++ created orm str 存儲 判斷 是否

判斷兩個字符串是否互為變形詞

  

  給定兩個字符串 str1 和str2 ,如果兩個字符串中出現的字符種類一樣,次數也一樣,則互為變形詞,實現一個函數判斷兩個字符串是否互為變形詞。例如 str1=“123”,str2=“132”,true; str1=“123”,str2=“1332”,false;

  

  【解題思路】

  1. 首先比較兩個字符串的長度,長度不同肯定是false。

  2. 如果長度相同,新建一個數組,用以存儲每個字符出現次數。

  3. 初始值都是為0,在str1 中出現一次就加1,在str2 中出現一次就減1,最後遍歷完str2沒有出現負值,就返回true。

package
com.test; /** * Created by Demrystv. */ public class IsDeformation { /** * 如果字符的類型很多,可以采用哈希表代替長度為256的整型數組, * 字符串的種類為 M,字符串的長度為 N,那麽 時間復雜度是 O(N), 空間復雜度是O(M) * @param str1 * @param str2 * @return */ public boolean isDeformation(String str1, String str2){
if (str1 == null || str2 == null || str1.length() != str2.length()){ return false; } char[] chars1 = str1.toCharArray(); char[] chars2 = str2.toCharArray(); int[] map = new int[256]; for (int i = 0; i < chars1.length; i++) { map[chars1[i]]
++; } for (int i = 0; i < chars2.length; i++) { if (map[chars2[i]]-- == 0){ return false; } } return true; } }

  

字符串問題----判斷兩個字符串是否互為變形詞