【演算法】給定兩個字串,確定一個字串重新排列後能否變成另一個字串(java實現)
阿新 • • 發佈:2018-12-22
分析:兩個字串的長度都不相同時,不可能是變位詞
package com.billkang.algorithm; import java.util.Arrays; /** * 給定兩個字串,確定一個字串重新排列後能否變成另一個字串 * * @author Kangbin * @date 2018-11-17 */ public class Permutation { // 分析:兩個字串的長度都不相同時,不可能是變位詞 /** * 檢查兩個字串都排好序時是否相等 * * @param s * @param t * @return */ public boolean permutation1(String s, String t) { if (s.length() != t.length()) { return false; } return sort(s).equals(sort(t)); } private String sort(String s) { char[] content = s.toCharArray(); Arrays.sort(content); return new String(content); } /** * 檢查兩個字串每個字元是否相等 * * @param s * @param t * @return */ public boolean permutation2(String s, String t) { if (s.length() != t.length()) { return false; } int[] letters = new int[256]; for (int i = 0; i < s.length(); i++) { char c = s.charAt(i); letters[c]++; } for (int i = 0; i < t.length(); i++) { char c = t.charAt(i); if (--letters[c] < 0) { return false; } } return true; } public static void main(String[] args) { System.out.println(new Permutation().permutation1("abc", "abcd")); System.out.println(new Permutation().permutation1("abc", "abc")); System.out.println(new Permutation().permutation2("abc", "abd")); System.out.println(new Permutation().permutation2("abc", "abc")); } }