题目:给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。
示例:
输入: s1 = “abc”, s2 = “bca”
输出: true
输入: s1 = “abc”, s2 = “bad”
输出: false
解题思路:
如果s1可以通过编排变成s2,那么s1有的字符,s2一定有,且他们的个数也一定相同。那么我们可以每次都从s1中取出第一个字符,然后去s2中找,找到就把s2中该字符去掉,找不到直接返回false,直到s1和s2其中一个为空退出循环,此时再判断s1和s2是否都为空字符串,如果是,那么s1可以通过编排变成s2,返回true,如果不是,那么s1不能通过编排变成s2,返回false。
class Solution {
public boolean CheckPermutation(String s1, String s2) {
while(!s1.equals("") && !s2.equals("")){
char temp = s1.charAt(0);
s1 = s1.substring(1);
//s1中有s2不存在的字符,返回false
int index = s2.indexOf(temp);
if(index == -1) return false;
//s2中有s1中有的字符,删掉
//查看索引是否是s2的最后一个元素
if(index != s2.length() - 1){
s2 = s2.substring(0,index) + s2.substring(index+1);
}else{
s2 = s2.substring(0,index);
}
}
if(s1.equals("") && s2.equals("")) return true;
return false;
}
}
力扣战绩: