2013-05-30 68 views
-1

* 问题(字符串组合) interviewstreet.com *(字符串组合)从interviewstreet.com

  • 给定两个字符串,写一个方法来决定,如果一个是 置换 另一个。您的解决方案应该考虑区分大小写,并将空白视为重要。

  • 一组对象的排列是这些对象 排列成特定顺序的排列。例如,字符串“abc”,即“abc”,“acb”,“bac”,“bca”,“cab”以及 “cba”有六个排列组合 。

  • 输出: 如果两个字符串是相互排列的,则返回1。 如果两个字符串不是彼此的排列,则返回0。

  • ABC ACB驾驶室CBA BAC BCA

进口java.io. *;

进口的java.util。*;

public class解决方案{

private set置换;

public static void main(String args[]) throws Exception { 
// Scanner sc = new Scanner(System.in); 
    //String string1 = sc.nextLine(); 
    //String string2 = sc.nextLine(); 

String string1 = "str"; 
    String string2 = "str"; 

    Solution solution = new Solution(); 
    int output = solution.permutation(string1, string2); 
    System.out.println(output); 
} 

public void stringPermuation(String s1, String s2) { 

if (s2.length() > 0) { 

for (int i = 0; i < s2.length(); i++) { 
    System.out.println(s1 + s2.charAt(i)+","+ s2.substring(0, i)+" +"+ s2.substring(i + 1)); 

    stringPermuation(s1 + s2.charAt(i), 
     s2.substring(0, i) + s2.substring(i + 1)); 
    }} 
else{ 
    permutations.add(s1); 
    System.out.println(s1); 
} 
} 

public Set stringPermuation(String s) { 
permutations = new HashSet<String>(); 
stringPermuation("", s); 
return permutations; 
} 



private int permutation(String string1, String string2) { 
int result = 0; 
Set<String> setString1 = stringPermuation(string1); 
Set<String> setString2 = stringPermuation(string2); 
    // create an iterator 

    System.out.println("There are total of " + setString1.size() + " permutations in String1:"); 
    System.out.println("There are total of " + setString2.size() + " permutations in String2:"); 

    if(setString1.size() == setString2.size()) 
     result=IterateSet(setString1,setString2); 

    //Return 1 if string1 is a permutation of string2 
    //Return 0 if string1 is not a permutation of string2 
return result; 
} 

public int IterateSet(Set setString1,Set setString2){ 
    int i= 0; 
    Iterator<String> it = setString1.iterator(); 
    while (it.hasNext()) { 
     if(setString2.contains(it.next()) && i == 0) 
     i=1; 
    } 
return i;}} 
+2

这是隐藏在这里的问题吗? – Eran

回答

1

...排序的两个字符串(按字典顺序)的字符,如果两个排序字符串相等,原件是彼此的排列。