gpt4 book ai didi

java - 检查两个字符串是否相互排列?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:32:29 27 4
gpt4 key购买 nike

我正在解决这个问题作为学校的作业。但是当我提交代码时,我的两个测试用例都出错了?我不知道出了什么问题。我已经检查了各种其他测试用例和边角案例,结果都是正确的。

这是我的代码:

    public static boolean isPermutation(String input1, String input2) {

if(input1.length() != input2.length())
{
return false;
}

int index1 =0;
int index2 =0;
int count=0;


while(index2<input2.length())
{

while(index1<input1.length())
{
if( input1.charAt(index1)==input2.charAt(index2) )
{
index1=0;
count++;
break;
}
index1++;

}
index2++;
}


if(count==input1.length())
{
return true;
}


return false;

}

样本输入

abcde
baedc

输出

true

样本输入

abc
cbd

输出

false

最佳答案

一个更简单的解决方案是对两个字符串中的字符进行排序并比较这些字符数组。

例子

public static void main(String[] args) {
System.out.println(isPermutation("hello", "olleh"));
System.out.println(isPermutation("hell", "leh"));
System.out.println(isPermutation("world", "wdolr"));
}

private static boolean isPermutation(String a, String b) {
char [] aArray = a.toCharArray();
char [] bArray = b.toCharArray();
Arrays.sort(aArray);
Arrays.sort(bArray);
return Arrays.equals(aArray, bArray);
}

没有排序的更冗长的解决方案是检查 A 中的每个字符也在 B 中

private static boolean isPermutation(String a, String b) {
char[] aArray = a.toCharArray();
char[] bArray = b.toCharArray();

if (a.length() != b.length()) {
return false;
}
int found = 0;
for (int i = 0; i < aArray.length; i++) {
char eachA = aArray[i];
// check each character in A is found in B
for (int k = 0; k < bArray.length; k++) {
if (eachA == bArray[k]) {
found++;
bArray[k] = '\uFFFF'; // clear so we don't find again
break;
}
}
}
return found == a.length();
}

关于java - 检查两个字符串是否相互排列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42091542/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com