输入 - “sumit mitsu”
如何查找字符串中任何一个的排列是否与另一个匹配。请在下面找到我的尝试代码,如果我的方法正确,请帮助我。我还尝试使用 Arrays.sort 对字符串进行排序,但 hackerEarth 编辑器不接受 Arrays.sort。还有其他方法可以解决这个问题吗? TIA。
注意 - 这是一个 hackerEarth 两个字符串问题。
我已将输入拆分为两个字符串数组。然后我将每个关键字转换为字符数组。通过 for 循环,我遍历了 S1 中的每个关键字以与 S2 数组匹配。
class TestClass {
public static void main(String args[] ) throws Exception {
Scanner s = new Scanner(System.in);
int cases=s.nextInt();
for(int i=0;i<cases;i++){ //for multiple lines
String name1=s.nextLine();
String name2=s.nextLine();
char[] n1=name1.toCharArray();
char[] n2=name2.toCharArray();
boolean match=false;
for(int j=0;j<n1.length;j++){
for(int k=0;k<n2.length;k++){
if(n1[j]==n2[k]){
match=true;
break;
}
else{
match=false;
}
}
}
System.out.println(match);
}
}
}
输入 - majnu jamnu
预期 - 正确 实际 - 错误
最佳答案
您的代码存在多个问题:
您可能在读取输入时遇到问题。如果您对测试的输入进行硬编码(即
String name1="majnu"; String name2="jamnu";
),您的程序将输出true
。如果您尝试使用nextLine()
读取每个String
,即使它们是在同一行中输入的,这也不足为奇。您无需考虑同一字符多次出现的情况。您的程序将为
abbbb
和baa
返回true
。您的程序具有二次(即
O(n^2)
)时间复杂度。如果您维护一个HashMap
来计算第一个单词中每个字符的出现次数,并根据该Map
检查第二个单词,则可以以线性复杂度完成此操作。
关于java - 给定一个输入中的两个字符串(用逗号分隔),如何在 Java 中找出字符串 S1 的排列是否等于字符串 S2?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56206301/