我编写了一个Java程序来查找2个字符串的Anagram。
供参考:如果两个字符串使用相同的完全相同的字母书写,而忽略空格,标点和大写字母,则它们是字谜。每个字母在两个字符串中的计数应相同。例如,陆军和玛丽彼此相似。
程序:
package practice;
import java.util.ArrayList;
import java.util.List;
public class Anagram_String {
public static void main(String[] args) {
String s1="mary";
String s2="army";
int k=0;
List<String> matchedChar= new ArrayList<String>();
String charmatch="";
char[] ch1= s1.toLowerCase().toCharArray();
char[] ch2= s2.toLowerCase().toCharArray();
if(s1.length()==s2.length())
{
for(int i=0;i<s1.length();i++)
{
for(int j=0;j<s2.length();j++)
{
if(ch1[i]==ch2[j])
{
k++;
charmatch=String.valueOf(ch1[i]);
System.out.println(charmatch);
matchedChar.add(charmatch);
System.out.println("Arraylist value is "+matchedChar.toString());
System.out.println(matchedChar.size());
}
}
k=0;
}
String arrayValue=matchedChar.toString();
System.out.println("Array value is "+arrayValue);
if(arrayValue.contains(s2)){
System.out.println("String 1 and String 2 are anagrams of each other");
}
else
{
System.out.println("String 1 and String 2 are not anagrams of each other");
}
}
}
}
输出:
m
Arraylist value is [m]
1
a
Arraylist value is [m, a]
2
r
Arraylist value is [m, a, r]
3
y
Arraylist value is [m, a, r, y]
4
Array value is [m, a, r, y]
String 1 and String 2 are not anagrams of each other
在这里,如果您看到所有字符都已添加到arraylist中,但与字符串进行比较时,它显示的是输出,因为它们不是彼此的字谜。
请帮助我找到解决方案。
谢谢,
我认为您的解决方案仅适用于具有唯一字符的单词,并且时间复杂度为O(n ^ 2)(其中n-是String的长度)。
但是,对于此类问题有更好的解决方案:
String.toCharArray()
价值为每串本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句