Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 两个字符串中有多少个字符相同_Java - Fatal编程技术网

Java 两个字符串中有多少个字符相同

Java 两个字符串中有多少个字符相同,java,Java,在几次没有结果的搜索之后,我来请求您的帮助。我有个小问题。我有两条线: String values = "acceikoquy"; String values2 = "achips"; 我将获得相同数量的字符,因此: 3 你知道怎么做吗 我的代码: String values = "acceikoquy"; String values2 = "achips"; int test = StringUtils.countMatches(values, values2); System.out

在几次没有结果的搜索之后,我来请求您的帮助。我有个小问题。我有两条线:

String values = "acceikoquy";
String values2 = "achips";
我将获得相同数量的字符,因此:

3
你知道怎么做吗

我的代码:

String values = "acceikoquy";
String values2 = "achips";

int test = StringUtils.countMatches(values, values2);

System.out.println(test);
大概是这样的:

  public static int sameCharsCount(String left, String right, boolean countDuplicates) {
    if ((null == left) || (null == right))
      return 0;

    HashMap<Character, Integer> occurence = new HashMap<Character, Integer>(); 

    for (int i = 0; i < left.length(); ++i) {
      Character ch = left.charAt(i);

      if (!occurence.containsKey(ch))
        occurence.put(ch, 1);
      else
        occurence.put(ch, occurence.get(ch) + 1);
    }

    int result = 0;

    for (int i = 0; i < right.length(); ++i) {
      Character ch = right.charAt(i);

      if (occurence.containsKey(ch)) {
        result += 1;

        if (!countDuplicates || occurence.get(ch) <= 1)
          occurence.remove(ch);
        else
          occurence.put(ch, occurence.get(ch) - 1);
      }
    }

    return result;
  }
public static int samecharscont(字符串左、字符串右、布尔计数重复){
如果((null==左)| |(null==右))
返回0;
HashMap Occurrence=新建HashMap();
对于(int i=0;i如果(!countDuplicates | | occurrence.get(ch)您可以用这种方式尝试

 String values = "acxa";
    String values2 = "abada";
    int count=0;
    List<Character> list=new ArrayList<>();
    List<Character> list1=new ArrayList<>();
    for(int i=0;i<values2.length();i++){
        list.add(values2.charAt(i));
    }
    for(int i=0;i<values.length();i++){
         list1.add(values.charAt(i));
    }
    ListIterator<Character> listIterator=list.listIterator();
    while (listIterator.hasNext()){
        char val=listIterator.next();
        if(list1.toString().contains(""+val)){
            count++;
            listIterator.remove();
            int index=list1.indexOf(val);
            list1.remove(index);
        }
    }
    System.out.println(count);

可能重复当你自己尝试这样做时遇到了什么问题?你尝试了什么?是的。我确实知道怎么做。@我只返回1。现在不知道为什么。谢谢你救了我的命反例:
values=“acxa”和values2=“abada”
在需要
2
时返回
3
(如果没有重复项,则应计数
1
 String values = "acxa";
    String values2 = "abada";
    int count=0;
    List<Character> list=new ArrayList<>();
    List<Character> list1=new ArrayList<>();
    for(int i=0;i<values2.length();i++){
        list.add(values2.charAt(i));
    }
    for(int i=0;i<values.length();i++){
         list1.add(values.charAt(i));
    }
    ListIterator<Character> listIterator=list.listIterator();
    while (listIterator.hasNext()){
        char val=listIterator.next();
        if(list1.toString().contains(""+val)){
            count++;
            listIterator.remove();
            int index=list1.indexOf(val);
            list1.remove(index);
        }
    }
    System.out.println(count);
2