检查一对字符串是否包含相同的字符?
我可以使用txt文件或通过Scanner类(我可能会使用)输入,但我需要比较字符串并检查它们是否包含相同的字符。如果有重复的字符,它仍然是真实的,例如,abc
和aaabbbccc
将是相同的。检查一对字符串是否包含相同的字符?
你可以做这样的事情:
//just call the checkChars method with 2 strings and it will check both strings to make sure
//that all the characters are contained in both strings.
public static void main(String args[]) {
String test = "abc";
String test1 = "abcaaabbc";
System.out.println("" + checkChars(test, test1));
}
public static String checkChars(String string1, String string2)
{
boolean isContained = false;
char[] char1 = string1.toCharArray();
char[] char2 = string2.toCharArray();
for(int i = 0; i < char1.length; i++)
{
isContained = false;
for(int j = 0; j < char2.length; j++)
{
if(char1[i] == char2[j])
{
isContained = true;
break;
}
}
if(isContained == false)
{
break;
}
}
if(isContained == true)
{
for(int i = 0; i < char2.length; i++)
{
isContained = false;
for(int j = 0; j < char1.length; j++)
{
if(char2[i] == char1[j])
{
isContained = true;
break;
}
}
if(isContained == false)
{
break;
}
}
}
if(isContained)
{
return "Both strings contain the same characters.";
}
else
{
return "The strings have different characters.";
}
}
可以使用checkChars方法用于比较两个字符串为相同的字符。
我在我的主要方法中调用它,但我想要返回像“两个字符串是相同的”而不是只是true或false,我是否需要将返回类型设置为一个字符串? – user3247712 2014-11-21 20:12:16
是的,我会编辑,所以你可以看到如何做到这一点... – brso05 2014-11-21 20:18:18
@ user3247712你去了我编辑它返回一个字符串消息... – brso05 2014-11-21 20:20:12
既然你不担心字符数,你的问题比一个更常见的问题要简单得多:anagrams。作为Pshemo的评论指出,使用Set
S:
boolean hasSameChars(String s, String t) {
Set<Character> sChars = new HashSet<Character>(Chars.asList(s.toCharArray());
Set<Character> tChars = new HashSet<Character>(Chars.asList(t.toCharArray());
return sChars.equals(tChars);
}
如果你想检查的字符数也是两个字符串相同,然后用Map<String, Integer>
或Multiset<String>
跟踪计数。
为了使答案简明扼要,我使用了番石榴,但这个想法显然独立于番石榴的方法。
随着堆栈溢出快速搜索,我得到这个 删除重复的字符 - 仅>检查它们是否相同
公共静态无效的主要(字串[] args){
String s1 = "abc";
String s2 = "aaabbbccc";
System.out.println(check(dupRemove(s1), dupRemove(s2)));
}
static boolean check(String a, String b){
char[] c1 = a.toCharArray();
char[] c2 = b.toCharArray();
Arrays.sort(c1);
Arrays.sort(c2);
return Arrays.equals(c1, c2);
}
static String dupRemove(String s){
StringBuilder clean = new StringBuilder();
for (int i = 0; i<s.length(); i++){
String j = s.substring(i, i + 1);
if(clean.indexOf(j)==-1){
clean.append(j);
}
}
return clean.toString();
}
- >排序相同的字符或可能abc = aabbbcccdddeee? – brso05 2014-11-21 19:31:11
将两个字符串中的字符分开,并将其设置为'Set'并比较它们的内容。 –
Pshemo
2014-11-21 19:31:26
只有相同的字符。 abc = aaabbbcccddee会被认为是不同的。 – user3247712 2014-11-21 19:36:30