1. 程式人生 > >小演算法:給定兩個字串,請編寫程式,確定其中一個字串的字元重新排列後,能否變成另一個字串s首先

小演算法:給定兩個字串,請編寫程式,確定其中一個字串的字元重新排列後,能否變成另一個字串s首先

(1)題目描述
  給定兩個字串,請編寫程式,確定其中一個字串的字元重新排列後,能否變成另一個字串。這裡規定大小寫為不同字元,且考慮字串重點空格。
  給定一個string stringA和一個string
 stringB,請返回一個bool,代表兩串是否重新排列後可相同。保證兩串的長度都小於等於5000。 測試樣例:
 "This is nowcoder","is This nowcoder" 返回:true
 "Here you are","Are you here" 返回:false

(2)實現思路:

最先不明白的地方就是 字串string也可以排序,排序後的輸出是什麼呢!

首先,r如果兩個字串長度不相等,肯定不是相互的重排列,因而返回 false

其次,就是對他們排序處理,如果排序後的兩個字串相等,說明他們是互為重排的,否則不是。

最後,最關鍵的是排序方法的實現,sort()為什麼會用到 java.util.Arrays.sort(chars); 關鍵所在。

(3)實現程式碼:

public class Solution3 {


//對字串進行排序
public static String sort(String string){
char[] chars = string.toCharArray();
java.util.Arrays.sort(chars);
String newstring=new String(chars);
return newstring;
}
public static boolean checkSam(String stringA, String stringB) {
// write code here
if(stringA.length()!=stringB.length()){
return false;
}
String sA=sort(stringA);
String sB=sort(stringB);
return sA.equals(sB);
}


public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("輸入第一個字串(保證字串的長度小於等於5000):");
String stringA=scanner.nextLine();
System.out.println("輸入第二個字串(保證字串的長度小於等於5000):");
String stringB=scanner.nextLine();

boolean b = checkSam(stringA, stringB);
System.out.println("b....." + b);
}
}