题目
给定两个字符串,编写程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
算法
排序字符串
两个单词互为变位词,那么排序后,就会相同,所以先对字符串排序,然后比较
class Solution{
private String sort(String s){
char[] content=s.toCharArray();
Arrays.sort(content);
return new String(content);
}
public boolean permutation(String s, String t){
if(s.length()!=t.length())
return false;
return sort(s).equals(sort(t));
}
public static void main(String[] args){
Solution s=new Solution();
String str_s="abcde";
String str_t="ecdba";
boolean res=s.permutation(str_s,str_t);
System.out.println(res);
}
}
算法
变量字母表,计算每个字符的出现次数,然后比较两个数组就可以
/*import java.util.*;
class Solution{
public static void main(String[] args)
}*/
import java.util.*;
class Solution{
public boolean permutation(String s, String t){
if(s.length()!=t.length())
return false;
int[] letters =new int[256];
char[] s_array=s.toCharArray();
for(char c:s_array){
letters[c]++;
}
for(int i=0;i<t.length();i++){
int c=(int) t.charAt(i);
if(--letters[c]<0)
return false;
}
return true;
}
public static void main(String[] args){
Solution s=new Solution();
String str_s="abcde";
String str_t="ecdba";
boolean res=s.permutation(str_s,str_t);
System.out.println(res);
}
}