阿里笔试2020-3-27
第一题【AC】
要求:将字符串s1转换为s2,
转换规则:每次可以将s1中的任意一个字符移动到s1的末尾
目的:求最少的改变次数时,s1转换为s2
比如
输入:
acdk
ckad
输出:
2
思路:
1、先判断s1,s2长度是否相等,不相等直接输出-1;
2、再判断s1,s2拥有的字符是否一致,不一致直接输出-1:
3、步骤3有点不好形容,见下图吧,只要遍历一下s1,查找在s2中有哪些匹配就好了,
代码
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s1 = sc.nextLine();
String s2 = sc.nextLine();
fun(s1, s2);
}
public static void fun(String s1, String s2) {
if (s1.length() != s2.length()) {
System.out.println(-1);
return;
}
char[] chars1 = s1.toCharArray();
char[] chars2 = s2.toCharArray();
Arrays.sort(chars1);
Arrays.sort(chars2);
for (int i = 0; i < chars1.length; i++) {
if (chars1[i] != chars2[i]) {
System.out.println(-1);
return;
}
}
int index2 = 0;
for (int i = 0; i < s1.length(); i++) {
if (s1.charAt(i) == s2.charAt(index2)) {
index2++;
}
}
int res = s2.length() - index2;
System.out.println(res);
} 第二题
没有出来,
直接输出1,过了5%,哈哈。
还得好好复习啊,大家加油!!!!
#阿里笔试##笔试题目#