过去一小时我一直在绞尽脑汁想知道如何做到这一点。这更像是一个逻辑问题,而不是我认为的技术问题。
我有两个字符串,希望计算它们共有多少个字符。 I.e Emily + Andy = 1。
我以为我可以将字符串转换为字符串数组,并在彼此之间使用两个For语句来完成每种可能性,但我不是100%就如何做到这一点。我已经搜索谷歌的答案,但我没有得到任何答案。
我为没有提供任何代码而道歉,我目前没有任何代码。我对Java很新,我不知道如何解决这个问题。
任何人都有解决方案吗?
答案 0 :(得分:3)
首先,您必须删除两个字符串中的重复字母,然后您必须进行比较。以下代码工作正常。
public class CountDuplicates {
/**
* Author Krishnan
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "palani";
String str2 = "krishnan";
String str11 = "";
String str12 = "";
char[] ch1 = str1.toCharArray();
char[] ch2 = str2.toCharArray();
int count = 0;
for(int i=0; i<ch1.length; i++)
{
if(!str11.contains(ch1[i]+""))
{
str11 += ch1[i];
}
}
for(int i=0; i<ch2.length; i++)
{
if(!str12.contains(ch2[i]+""))
{
str12 += ch2[i];
}
}
char[] ch11 = str11.toCharArray();
char[] ch12 = str12.toCharArray();
for(int i=0; i<ch11.length; i++)
{
for(int j=0; j<ch12.length; j++)
{
if(ch11[i] == ch12[j])
{
count++;
}
}
}
System.out.println("Duplicate Letters: " + count);
}
}
输出:
重复信件:3
答案 1 :(得分:1)
您可以将每个字符串转换为一个集合,然后执行集合交集以找出字符的共同点。这可能更容易理解。
答案 2 :(得分:1)
这绝对听起来像是一个家庭作业...但如果不是,我会通过将字符串转换为字符数组并编写嵌套的for循环来解决这个问题,该循环比较每个字符并在找到匹配时递增计数器。如果你只计算每个字母一次,那么算法会稍微改变一下。
答案 3 :(得分:1)
String s1 = "abbccsartcc";
String s2 = "cbdcezxrtcc";
Set arrSet1 = new HashSet(convertToList(s1));
Set arrSet2 = new HashSet(convertToList(s2));
arrSet1.retainAll(arrSet2)
System.out.println("Similar characters-->" + arrSet1.size());
convertToList方法:
private static List convertToList(String str) {
List tempList = new ArrayList();
char[] arr = str.toCharArray();
for (char a : arr) {
tempList.add(String.valueOf(a));
}
return tempList;
}
这将完美运作!!!! HTH !!
答案 4 :(得分:0)
你可以迭代第一个字符串,将每个字符作为键放入一个值为0的Hashtable。
迭代第二个字符串,如果字符在哈希表中,则将其值替换为1.
迭代哈希表并添加你的值。
答案 5 :(得分:0)
下面的方法将在两个不同的字符串中打印常用字符。
public void compareString(String s1, String s2) {
List<Character> charList = new ArrayList<Character>();
int count = 0;
for(char c : S1.toCharArray()) {
if(!charList.contains(c)) {
INNER: for(char c1 : S2.toCharArray()) {
if(c == c1) {
count = count+1;
charList.add(c);
System.out.println(c1);
break INNER;
}
}
}
}
System.out.println("Duplicated Characters in two different strings :"+count);
}
答案 6 :(得分:0)
这看起来像是家庭作业。
适用于大多数语言的传统方法是:
完成
答案 7 :(得分:0)
您可以使用ArrayList解决此问题,如下所示,我只是快速地将它们放在一起,但这应该是一个好的开始:
import java.util.ArrayList;
public class StringCount {
/**
* @param args
*/
public static void main(String[] args) {
// Get the strings from the command line or pass into method.
String name1 = "Emyyilyyyyy";
String name2 = "Andyyyy";
int count = 0;
ArrayList<String> cache = new ArrayList<String>();
for (int i = 0;i < name1.length();i++)
{
String check = name1.substring(i, i+1);
System.out.println("Letter to check: " + check);
if (name2.indexOf(check) != -1)
{
// Check to see if we already found the character so we don't count it again
if (!cache.contains(check))
{
System.out.println("Found: " + check + " in: " + name2);
cache.add(check);
count++;
}
}
}
System.out.println();
System.out.println("Count = " + count);
}
}